기타/C++ STL: 14개의 글
[STL] multimap 정리 및 예제 map 컨테이너에 중복 원소(key)를 허용해야 한다면 multimap 컨테이너를 사용한다.map은 key를 중복해서 컨테이너에 저장할 수 없지만 multimap은 여러 key를 중복해서 저장할 수 있다. 중복 key를 허용하는 multimap은 [] 연산자를 제공하지 않는다. [기타/C++ STL] - [STL] map 정리 및 예제 Colored By Color Scripter™#include #include using namespace std; int main(){ multimap mm; mm.insert(pair(5, 100)); mm.insert(pair(3, 100)); mm.insert(pair(8, 30)); mm.insert(pair(3, 40))..
[STL] map 정리 및 예제 map 컨테이너는 연관 컨테이너 중 자주 사용하는 컨테이너로 원소를 key 와 value의 쌍으로 저장한다.set은 원소로 key 하나만을 저장하지만, map 은 원소로 key와 value의 쌍(pair 객체)를 저장한다.set처럼 원소의 key는 컨테이너에 중복 저장될 수 없으며 중복 key를 저장해야 한다면 mulitmap을 사용해야 한다. [기타/C++ STL] - [STL] set 정리 및 예제 map도 연관 컨테이너이므로 set과 같은 인터페이스 멤버 함수를 제공하며 템플릿 형식과 내장 멤버 형식만이 약간의 차이를 보인다.특히, map은 [] 연산자를 제공하여 key에 해당하는 원소의 value에 쉽게 접근하거나 변경할 수 있다. 연관 컨테이너의 핵심은 빠른 원소..
[STL] multiset 정리 및 예제 multiset 컨테이너는 중복 원소를 컨테이너에 저장할 수 있다는 것 외에는 set과 다른 것이 없다.set 처럼 원소가 자동 정렬되는 연관 컨테이너에 노드 기반 컨테이너이다. [기타/C++ STL] - [STL] set 정리 및 예제 #include #include #include using namespace std; int main(){ multiset ms; multiset::iterator iter; ms.insert(50); ms.insert(30); ms.insert(80); ms.insert(80); ms.insert(30); ms.insert(70); iter = ms.insert(10); // 삽입된 위치를 반환한다. cout
[STL] set 정리 및 예제 set 컨테이너는 연관 컨테이너 중 단순한 컨테이너로 key라 불리는 원소(value).의 집합으로 이루어진 컨테이너이다.모든 연관 컨테이너는 노드 기반 컨테이너이며 균현 이진 트리로 구현되므로 균형 이진 트리의 모든 특징을 갖는다. 템플릿 형식 templateclass set Key는 set 컨테이너 원소의 형식이며, Pred는 set의 정렬 기준인 조건자이다. 기본 조건자는 less 이다. 생성자 set s;s는 빈 컨테이너이다. set s(pred)s는 빈 컨테이너로 정렬 기준은 pred 조건자를 사용한다 set s(s2)s는 s2 컨테이너의 복사본이다. set s(b,e)s는 반복자 구간 [b,e)로 초기화된 원소를 갖는다. set s(b,e, pred)s는 반복자..
[STL] list 정리 및 예제 list 컨테이너는 vector와 deque 처럼 시퀀스 컨테이너로 원소가 상대적인 순서를 유지한다.그러나 list는 노드 기반 컨테이너로 원소가 노드 단위로 저장되며 list는 이중 연결 리스트로 구현된다. [기타/C++ STL] - [STL] vector 벡터 정리 및 예제 [기타/C++ STL] - [STL] deque 정리 및 예제 템플릿 형식 templatecalss listT 는 list 컨테이너 원소의 형식 생성자 list ltlt는 빈 컨테이너이다. list lt(n)lt는 기본값으로 초기화된 n개의 원소를 갖는다. list lt(n, x)lt는 x 값으로 초기화된 n개의 원소를 갖는다. list lt(lt2)lt는 lt2 컨테이너의 복사본이다 list l..
[STL] deque 정리 및 예제 deque 컨테이너는 vector 컨테이너와 기능과 동작이 비슷한 컨테이너로 vector의 단점을 보완하는 몇가지 특징을 갖는다.deque도 vector 컨테이너와 같이 시퀀스 컨테이너이며 배열 기반 컨테이너이다. [기타/C++ STL] - [STL] vector 벡터 정리 및 예제 템플릿 형식 templateclass deque T는 deque 컨테이너 원소의 형식 생성자 deque dqdq는 빈 컨테이너이다. deque dq(n)dq는 기본값으로 초기화된 n개의 원소를 갖는다. deque dq(n,x)dq는 x 값으로 초기화된 n 개의 원소를 갖는다. deque dq(dq2)dq는 dq2 컨테이너의 복사본이다. deque dq(b,e)dq는 반복자 구간 [b,e)로..
[STL] vector 벡터 정리 및 예제 vector 컨테이너는 대표적인 시퀀스 컨테이너로 배열과 비슷하여 사용이 쉬우며 자주 사용된다. vector는 임의 접근 반복자(Random Access Iterator)를 지원하는 배열 기반 컨테이너이다.vector의 가장 큰 특징 중 하나는 원소가 하나의 메모리 블록에 연속하게 저장된다는 것이다. 그렇다 보니 원소가 추가되거나 삽입될 때 메모리 재할당이 발생할 수 있고 상당한 비용을 지불하게 된다.그래서 메모리 할당 크기를 알 수 있게 capacity() 함수를 제공하며 한번에 메모리를 할당할 수 있는 reserve() 함수도 제공된다. 원소가 연속하게 저장되므로 [] 연산자 또는 at 으로 읽기에는 빠르지만 insert(), erase(), push_bac..
[STL] not2 함수 not2는 조건자 함수 객체를 반대 의미의 조건자 함수 객체로 변경하는 어댑터이다. 아래는 이항 조건자 less 를 반대 시키는 예제이다. 2019/07/30 - [기타/C++ STL] - [STL] less, greater, plus, minus 예제 Colored By Color Scripter™#include #include using namespace std; int main(){ cout
[STL] 역방향 반복자 (reverse_iterator) 기본 iterator에 반복자 어댑터 reverse_iterator 를 이용해 정방향 반복자를 역방향 반복자로 변환할 수 있다. 2019/07/30 - [기타/C++ STL] - [STL] 반복자 iterator 개념 및 예제 역방향 반복자(reverse_iterator)는 ++ , -- 시에 정방향 반복자와 반대로 동작한다. vector::reverse_iterator riter(v.rbegin()); reverse_iterator의 기본 선언이다.기존 iterator 선언 방식에 어댑터를 사용하여 reverse_iterator로 감싸고 있으며, vector에서 rbegin()을 시작 지점으로 가리킨다. 마찬가지로 역방향 반복자가 종료되는 지점..
[STL] 스택(stack) 기본 예제 컨테이너 어댑터의 종류는 stack, queue, priority_queue 가 있다. 그중 대표적인 컨테이너 어댑터는 stack 이다.stack은 LIFO(Last In First Out) 방식의 시퀀스이다. empty, size, push_back, pop_back, back 의 인터페이스를 지원하는 컨테이너(시퀀스)는 모두 stack 컨테이너 어댑터를 사용하여 LIFO 방식의 스택으로 변환할 수 있다.stack 컨테이너 어댑터의 디폴트 컨테이너는 deque 컨테이너이다.#include #include #include using namespace std; int main(){ stack st; // default 는 deque 컨테이너 사용 //stack st;..