본문 바로가기
반응형

C++20

C++로 BigInteger 구현해보기 BigInteger의 구현 원리를 알아보고 C++로 만들어 보도록 하겠다. 메모리 상에 표현가능한 정수의 범위로는 2의 32승 만큼인 -2,147,483,648 ~ +2,147,483,647이다. 하지만 실생활에선 21억이 넘어가는 숫자를 사용할 일이 충분히 많이 있다. 이런 경우에 사용하기 위해서 자릿수 제한 없이 정수 숫자를 표현할 수 있는 BigInteger에 대해 알아보고 만들어 보겠다. BigInteger는 데이터로 들어온 숫자를 문자열로 취급하여 표현할 것이다. BigInteger x; BigInteger y("-1234"); BigInteger z(y); x = "1234"; BigInteger 변수 선언시 생성자에 문자열이 parameter로써 들어가거나 다른 BigInteger의 값을 가.. 2023. 4. 11.
C, C++ Binary Tree(이진 트리) 만들기 (version 1) C와 C++로 Binary Tree 구현하기 C로 Binary Tree를 구현하고 C++로 바꿔보는 것 까지 해보겠다. Binary Tree라 하면, 각각의 노드가 최대 두 개의 자식 노드를 가지는 Tree 자료 구조로, 왼쪽 자식 노드와 오른쪽 자식 노드로 나뉜다. 트리에 7, 3, 2, 6, 9, 5, 8의 데이터를 넣는다고 해보자 Tree가 처음에 비어있을 경우, 노드를 하나 할당해주고 트리가 해당 노드를 가리키게 한다. 그 다음 3을 넣는다면 트리가 가리키는 노드들을 타고 내려가면서 노드들이 가지는 data 값과 새로 들어올 data값(=3)을 비교한다. 들어올 값이 비교하는 노드의 데이터 값보다 작다면 lchild 쪽으로, 크다면 rchild 쪽으로 간다. lchild나 rchild가 NULL을.. 2023. 4. 7.
C++ 문자열에 관한 정리 & String 직접 구현하기 C++ 문자열의 저장 방식과 동작 메커니즘 등을 알아보고 또 라이브러리의 String 클래스에 해당하는 JString을 직접 만들어 보도록 하겠다. 문자열을 다루기 전에 컴퓨터 메모리 영역의 구조에 대해서 알아야 할 필요가 있다. 운영체제의 메인 메모리 영역은 Code 영역, Data 영역, Heap 영역, Stack 영역 이 네가지로 분류된다. ● Code 영역 - 코드 영역은 텍스트 영역이라고도 하며 "코드를 실행하기 위해 저장되어 있는 영역"이다. 프로그램을 실행시키기 위해 구성되는 것들이 저장되는 영역이며, 제어문 / 상수 / 함수 등이 이 영역에 저장된다. ● Data 영역 - 작성한 소스코드에서 사용한 전역변수, 정적변수 등이 저장되는 공간이다. 이것들은 보통 프로그램 실행 전에 선언되어 프로.. 2023. 4. 4.
C++ LinkedList 만들기 (version 4 - Doubly LinkedList) C++로 Doubly LinkedList 만들기 https://suldenlion.tistory.com/97 (C로 자료구조 구현하기) LinkedList 만들기 (version 2 - Doubly LinkedList) C로 LinkedList 구현하기 Doubly LinkedList를 C로 구현해 보겠다. Doubly LinkedList는 Singly LinkedList의 단점을 보완해 만든 LinkedList로, Library에 있는 LinkedList는 Doubly LinkedList로써 구현되어 있다. Singly LinkedList suldenlion.tistory.com 위의 C로 Doubly LinkedLIst 만들기의 코드를 참고하여 C++ Doubly LinkedList를 만들어 보겠다... 2023. 3. 31.
STL Sorting 실험 및 정리 C++ 다양한 타입의 collection들의 정렬은 어떤 식으로 되는건지 직접해보고, 몇 가지 내용을 정리해 볼 것이다. 실험 1) 배열에 무작위 int 값 넣고 sorting #include using namespace std; #include #include int compareInt(const void *x, const void *y) // 값 읽기만 { int *p = (int *)x; int *q = (int *)y; return *p - *q; } void main() { int x[10]; srand((int)time(NULL)); //seeding - time, process id for (int i = 0; i < 10; i++) { x[i] = rand() % 100; // pseudo.. 2023. 3. 29.
Default Argument (디폴트 인수) C++의 Default Argument에 대해서 알아보겠다. Default argument란 디폴트 인수나 부재 인수라고 하며, 기본값이 미리 정의되어 있는 인수를 의미한다. 함수를 호출할때, 인수를 전달하지 않으면, 해당 함수는 자동으로 미리 정의해둔 디폴트 인수 값을 사용하게 된다. 하지만 인수를 전달하여 함수를 호출하면 Default argument가 아닌 전달받은 argument로 함수를 호출할 수 있다. 즉, 미리 지정한 argument를 쓸거면 쓰고 말거면 말라는 식이다. Default argument를 사용해 보자. #include using namespace std; int add(int a, int b) { return a + b; } int add(int a, int b, int c) .. 2023. 3. 28.
반응형