본문 바로가기

728x90

ComputerScience/C++

(9)
C++ - vector 중복 원소 제거 #include #include #include using namespace std; int main() { // a b a c b a b vector s; s.push_back("a"); s.push_back("b"); s.push_back("a"); s.push_back("c"); s.push_back("b"); s.push_back("a"); s.push_back("b"); // a a a b b b c sort(s.begin(), s.end()); // unique 이후 : a b c ? ? ? ? // erase 이후 : a b c s.erase(unique(s.begin(),s.end()),s.end()); } - unique는 연속된 중복 원소를 쓰레기 값으로 치환하여 vector의 제일 뒷..
C++ STL Algorithm 1. Algorithm - sequence container에서 동작 가능한 알고리즘들이 들어있다. - find(), sort(), min(), binary_search()등등이 있다. 2. sort (built in) - sort는 vector와 deque에서 사용가능하다. - List에서는 사용이 불가한데 이는 sort가 general하게 O(nlogn)으로 동작하도록 하기 위해서는 random access가 필요하기 때문이다. - 따라서 random access가 가능한 vector나 deque같은 random access sequence container에서만 동작한다. 3. sort (user defined class) - 위의 예시는 built in type의 sort를 수행하였는데 만약 내가..
C++ STL iterator 1. Iterators - STL container의 원소들을 traverse할 때 사용한다. - 포인터와 유사하게 컨테이너의 특정 위치를 가리킨다. - ++ -- * 등의 연산도 가능하다. - algorithms들이 container의 element들을 접근하는데 interator를 사용한다. - 이터레이터는 타입이 존재한다. - 타입에 따라 선언을 하면 아래와 같은 연산이 가능하다. 포인터와 유사하지만 분명한건 포인터가 아니라 class이다. - 참고로 container class에서 제공하는 member function begin(), end()는 iterator를 반환한다. 2. Source Code 3. Why are iterators so great? - iterator를 활용하면 genera..
C++ STL associative container 1. associative container - set : duplicated한 데이터가 존재할 수 없다. 데이터를 삽입하면 자동으로 정렬해준다. 데이터들은 Balanced Binary Search Tree로 저장된다. 데이터를 찾는 속도가 O(lgN)이다. - map : (key, value) pair로 저장되는 집합이다. person["김철수"] = Person() 처럼 사용한다. 데이터들은 Balanced Binary Search Tree로 저장된다. 데이터를 찾는 속도가 O(lgN)이다. - hash_map : 데이터를 hash에 기반해서 저장하는 container이다. 데이터를 찾는 속도가 O(1)이다. 2. container adapters - 다른 container에 기반해서 만들어진 con..
C++ STL sequence container 1. Standard Template Library - C++ internal library이다. - template으로 구현되어 있다. - container class (vector, list, stack, queue) 등이 구현되어있다. - algorithms (sort, search, merge, swap) 등이 구현되어있다. 2. container class - data type에서 자유로운 object들을 저장하는 collection이다. - 포인터와 비슷한 iterator를 통해 element들에 접근한다. - 뿐만아니라 container class에는 sort, search등의 다양한 operation들이 구현되어 있다. 3. sequence container - 순서대로 data가 저장되는..
C++ - Template 1. Class Template - container class 구현시 용이함 (ex. stack, list, vector, set..) - generalize된 타입에서 동작하는 클래스를 하나로 구현가능하게 해준다. - 아래 template을 활용한 list 구현 예시를 살펴보자. - 위 코드는 list의 구성요소인 node를 정의한다. doublely linked list의 모습이다. - list class가 각 노드의 private member에 접근할 수 있도록 하기 위해 friend선언을 해주었다. - list를 template으로 구현한 모습이다. - append 함수만 봐도 list가 관리하는 노드들의 prev_m, next_m을 수정하는 일이 생기기 때문에 friend 선언이 필요했다. (..
C++ - split 함수 #include #include #include #include using namespace std; vector split(string input, char delimiter) { vector answer; stringstream ss(input); string temp; while (getline(ss, temp, delimiter)) { answer.push_back(temp); } return answer; } // 버퍼에 한 글자 지우기 cin.ignore(); // getline으로 읽어서 sounds에 문장 넣기 string sounds; getline(cin, sounds); // string을 ' '구분으로 나누기 vector vec_sounds = split(sounds, ' ');
C++ - File stream text file : 아스키 코드로 글자들을 표현한 텍스트 파일 .txt .c .cpp .pl .bat .java .html .xml .css binary file : 2진수 데이터만으로 이루어진 파일 .exe .dll .zip .rar .mp3 .mpg .jpg .gif

728x90