(출처: https://ko.cppreference.com/w/cpp/language/types ) (LP32, ILP32, LLP64, LP64는 data model을 나타내며, 글 맨 아래 '참고'에 정리해둠) C++ 정수형 데이터 타 입들 C++ standard를 기준으로 short - 최소 16비트 int - 최소 16비트 long int - 최소 32비트 long long int - 최소 64비트 (C++ standard는 정수형 데이터 타입의 명확한 크기를 정해두지 않았다. 다만 최소한의 하한선만 정해놓았다) 일반적으로 short 는 16 비트 , int 는 32 비트로 알고 있다 . 그래서 int 는 -2^31 ~ 2^31 – 1 범위의 정수를 표현할 수 있고 , 이보다 크거나 작은 정수를 표현하기 위해서는 비트수가 더 필요하다 . 그러면 long 을 써야하나 long long 을 써야하나 ? 확실한 방법은 long long int 를 쓰는 것이다 . C++ 표준을 보면 long int 는 최소 32 비트를 보장한다고 한다 . -2^31 ~ 2^31 – 1 범위를 넘어서는 정수를 표현하기 위해서는 C++ 표준 기준으로 최소 64 비트를 보장하는 long long int 를 써야한다 . (long int를 쓸 ...
인터넷을 돌아다니다 보니, 파일입출력은 기본 중에 기본이라고 한다. C++를 주로 사용하고 있지만 파일입출력을 할 줄 몰랐다. 그래서 정리한다. (내용출처 : http://www.cplusplus.com/doc/tutorial/files/ ) <fstream> C++는 <fstream> 이라는 Stream class를 지원한다. '파일에서 읽어오거나 파일에 쓰는 클래스' 라고 한다. istream과 ostream의 파생클래스이다(자식임). <fstream>에서 주로 쓰는 두 가지는 ofstream 과 ifstream 이다. ofstream ofstream은 'output file stream'이다. output이라길래 파일의 내용을 읽어오는 줄 알았는데 내 생각과 반대로 파일에 적는 친구다. ofstream에는 멤버함수 open이 있다. 사용법은 평소에 쓰던 cin, cout 과 비슷하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include < iostream > #include < fstream > using namespace std ; int main( void ) { // 파일 열기 ofstream myfile; myfile.open( "example.txt" ); // 파일에 쓰기 ...
Skip List 일반 Linked List 는 정렬이 되어있더라도 그 이점을 살리지 못하고 , 원하는 노드를 찾기 위해 헤드부터 끝까지 쭉 돌아야 한다 . == O(n). Skip List 는 일반 Linked List 에 level 의 개념을 추가해서 마치 binary search tree 처럼 탐색 속도를 줄이는 자료구조라고 할 수 있다 우선 생긴 것은 아래와 같다 . 출처 : https://en.wikipedia.org/wiki/Skip_list#/media/File:Skip_list.svg 각 노드마다 위쪽으로 길게 포인터가 붙어있는데 , 이것을 레벨이라고 한다 . ( 위에서부터 0 이라 하는지 , 밑에서부터 0 이라 하는지 등의 구체적인 것은 구현에 따라 달라질 수 있음 ) 먼저 find 를 생각해보자 . 위의 Skip List 에서 7 를 찾고 싶다고 생각하면 , 기존의 Linked List 에선 7 개의 노드를 봐야한다 . (1) 1 보고 , 아니네 ? 다음 (2) 2 보고 , 아니네 ? 다음 (3) 3 보고 , 아니네 ? 다음 … (7) 6 보고 , 아니네 ? 다음 (8) 7 보고 , 맞네 ? 찾았다 ! 물론 원하는 게 바로 안 나오면 n 개까지 찾다가 없다고 알아낼 수 있다 . 7 을 7 번만에 찾았다는 건 운이 좋은 경우이고 , 정렬이 되어있더라도 이 사실은 크게 변하지 않는다 ( 일반적인 Linked List 라고 하면 ). 반면 Skip List 에서 8 를 찾고 싶다면 1 -> 4 -> 6 -> 7 을 거쳐 찾을 수 있다 . (1) 1 보고 , 나보다 작네 ? 가장 높은 레벨 (4) 이 가리키는 애를 보자 (2) Null 을 가리키고 있네 .. 그러면 다음 낮은 레벨 (3) 을 보자 . (3) 4 를 기...
댓글
댓글 쓰기