본문 바로가기

Program Languege/STL

STL - 알고리즘 STL - 알고리즘 template Fn1 for_each ( InputIterator _First, InputIterator _Last, Function _Func ); first ~ last 사이의 구간을 순회하면서 op 함수 객체를 호출한다. 반환 값은 함수 객체인데 보통 무시한다. for_each는 루프를 돌리는 역할밖에 하지 않으므로 구체적인 동작을 하는 함수 객체가 반드시 필요하다. template InputIterator find ( InputIterator _First, InputIterator _Last, const Type& _Val ); 입력 반복자 두개로 검색 대상 구간을 지정하여 검색하고자하는 값을 세번째 인수로 전달한다. first ~ last 구간에서 val값을 가지는 요소가 .. 더보기
pair Pair 일종의 유틸리티 클래스로 형태는 컴파일러에 따라 달라진다. 두개씩 짝을 이룬 데이터를 다루거나 한꺼번에 두 개의 값을 반환하고 싶을 때 이 구조체를 사용한다. 사용하려면 utility 헤더를 포함해야한다. struct pair { typedef T1 first_type; typedef T2 second_type; T1 first; T2 second; pair() : first(T1()), second(T2()) {} pair(const T1 &v1, const T2 &v2) : first(v1), second(v2) {} }; 키와 값을 묶어서 관리하기 위해 set과 map에서 종종사용한다. 출처 : 혼자 연구하는 C/C++ 더보기
map 함수 map 함수 생성, 복사, 소멸 동작 효과 map c 아무런 원소 없이 빈 map/multimap을 생성한다. map c(op) 아무런 원소 없이 빈 map/multimap을 생성한다. 정렬 기준은 op를 사용한다. map c1(c2) 같은 타입으로 생성된 다른 map/multimap을 생성한다. map c(beg, end) (beg, end)의 범위로 초기화하여 map/multimap을 생성한다. map c(beg, end, op) (beg, end)의 범위로 초기화하여 map/multimap을 생성한다. 정렬 기준은 op를 사용한다. c.~map() 모든 원소들을 파괴하고 메모리를 해제한다. 수정하지 않는 동작들 동작 효과 c.size() 실제 원소의 개수를 반환한다. c.empty() 컨테이너가 비.. 더보기
set 함수 set 함수 생성, 복사, 소멸 동작 효과 set c 아무런 원소 없이 빈 set/multiset을 생성한다. set c(op) 아무런 원소 없이 빈 set/multiset을 생성한다. 정렬 기준은 op를 사용한다. set c1(c2) 같은 타입으로 생성된 다른 set/multiset을 생성한다. set c(beg, end) (beg, end)의 범위로 초기화하여 set/multiset을 생성한다. set c(beg, end, op) (beg, end)의 범위로 초기화하여 set/multiset을 생성한다. 정렬 기준은 op를 사용한다. c.~set() 모든 원소들을 파괴하고 메모리를 해제한다. 수정하지 않는 동작들 동작 효과 c.size() 실제 원소의 개수를 반환한다. c.empty() 컨테이너가 비.. 더보기
list 함수 list 함수 생성, 복사, 소멸 동작 효과 list c 원소 없이 빈 vector를 생성한다. list c1(c2) 같은 타입의 다른 vector를 복사하여 생성한다.(모든 원소들은 복사된다) list c(n) 디폴트 생성자에 의해서 생성되는 n개의 원소와 함께 vector를 생성한다. list c(n, elem) elem 원소의 n개의 복사본으로 vector를 초기화하여 생성한다. list c(beg, end) [beg, end] 범위의 원소로 vector를 초기화하여 생성한다. c.~list() 모든 원소들을 파괴하고 메모리를 해제한다. 수정하지 않는 동작들 동작 효과 c.size() 실제 원소의 개수를 반환한다. c.empty() 컨테이너가 비어 있는지를 판단한다.(size() == 0 보다 빠르.. 더보기
vector 함수 vector 함수 생성, 복사, 소멸 동작 효과 vector c 원소 없이 빈 vector를 생성한다. vector c1(c2) 같은 타입의 다른 vector를 복사하여 생성한다.(모든 원소들은 복사된다) vector c(n) 디폴트 생성자에 의해서 생성되는 n개의 원소와 함께 vector를 생성한다. vector c(n, elem) elem 원소의 n개의 복사본으로 vector를 초기화하여 생성한다. vector c(beg, end) [beg, end] 범위의 원소로 vector를 초기화하여 생성한다. c.~vector() 모든 원소들을 파괴하고 메모리를 해제한다. 수정하지 않는 동작들 동작 효과 c.size() 실제 원소의 개수를 반환한다. c.empty() 컨테이너가 비어 있는지를 판단한다.(siz.. 더보기
반복자(iterator) 반복자(iterator) 포인터의 일반화라고하며 반복자는 포인터를 그대로 흉내내어 임의의 컨테이너에 저장된 모든 요소를 순서대로 가리킬 수 있다. 반복자의 목적은 컨테이너 내부 순회에 있다. 1. 컨테이너의 요소 하나를 가리키는 기본적인 역할을 한다. 2. 가리키는 지점의 요소를 읽고 쓸 수 있다. 내용을 읽는 * 연산자가 정의된다. 3. 증감에 의해 주변 요소로 이동할 수 있다. ++, -- 등의 연산자가 정의된다. 4. 반복자끼리 대입, 비교 가능해야 한다. 대입, 비교 연산자가 정의된다. 컨테이너에 대해 어떤 작업을 하고 싶다면 컨테이너에 저장되어 있는 요소에 접근해야 하므로 순회가 꼭 필요하다. 반복자 카테고리 기능 제공자 입력 반복자 전방향 읽기 istream 출력 반복자 전방향 쓰기 ostre.. 더보기
컨테이너(Container) 컨테이너(Container) 컨테이너를 뜻 그대로 직영하면 통, 그릇이다. 쌀통에 쌀을 담고 술통에 술을 저장하듯이 컨테이너는 무엇인가를 저장하는 것이다. STL의 컨테이너는 타입이 같은, 즉 동질적인 객체의 집합을 저장하고 관리하는 역할을 한다. 다른 말로 컬렉션(Collection)이라고도 부른다. STL의 컨테이너는 자료를 저장하는 방식과, 삽입, 정렬, 삭제하는 관리 방식에 따라 크게 세 가지 부류로 구분된다. 시퀀스 컨테이너(Sequence Container) 자료의 선형적이거나 순차적인 집합이며 자료를 저장하는 기본 임무에 충실한 가장 일반적인 컨테이너이다. 삽입된 자료를 무조건 저장하며 입력되는 자료에 특별한 제약이나 관리 규칙은 없다. 임의의 위치에 요소를 마음대로 삽입, 삭제할 수 있다... 더보기
STL - Standard Template Library STL - standard Template Library 일반화의 개념에 의해 자주 사용되는 자료구조와 알고리즘을 제공하는 라이브러리가 바로 STL이다. 템플릿의 집합을 제공하는 라이브러리이며 현재 C++의 표준으로 채택되어 있다. 1979년경 알렉산더 스테파노프(Alexander Stepanov)한 사람에 의해 창안되었다. 이 시기는 스트로스트룹이 C++의 초기 디자인을 한 시점과 거의 일치한다. C++과 STL은 최초 따로 탄생했고 각자의 길을 걸어가다가 90년대중반에 비로소 하나로 통합되었다. 스테파노프는 최초 Ada로 STL의 원형을 작성하였는데 Ada는 일반화 프로그래밍을 위한 적절한 특징들을 많이 가지고 있었다. 그러나 Ada 자체가 대중의 인기를 얻지 못하고 C++이라는 더 적합한 언어가 발.. 더보기