본문 바로가기

프로그래밍/STL9

함수객체 요즘엔 이래저래 혼란이라 포스팅을 안하고 있었으나--a 개념파악은 다 한거 같고, 책 찾아 보기 귀찮은 것들만 빠르게 포스팅 하고, API로 넘어가야 할것 같다. 새벽2 시쯤엔 잘 수 있겠지 머 -_ -;; 잡소린 그만하고, 함수 객체를 사용하는 방법은 여러가지고 존재한다. 1. 전역 함수 2. 클래스 내의 맴버 함수 3. 글래스의 연산자 오버로딩 사용 예제 1. 전역 함수 #include #include #include // 컨테이너 생성 std::vector coll; // 전역으로 사용할 함수 객체 void print( int& _n ) { // 출력 std::cout 2010. 4. 19.
algorithm algorithm 해더를 추가하면 신기한 함수들을 사용이 가능한데, 이들은 STL의 컨테이너들을 대상으로 원하는 값을 검사 수행 하는 일들을한다. 간략하게 예제를 살펴 보자. #include #include #include // 알고리즘에 관련된 해더 void main() { std::vector coll; std::vector::iterator pos; // 값을 삽입 후에 coll.push_back(2); coll.push_back(5); coll.push_back(4); coll.push_back(1); coll.push_back(6); coll.push_back(3); // 최소값 pos = min_element( coll.begin(), coll.end() ); std::cout 2010. 4. 8.
연관 컨테이너 - Set, Map, multiSet, multiMap 시퀀스 컨테이너와 비슷하지만 다른 연관 컨테이너는 set과 map이 존재한다. 일단 모두다 트리구조로 이루어져 있고 map은 pair형태를 띄고 있으며, multi가 아닌 연관 컨테이너는 중복된 값을 허용하지 않는 다는 특징이 있다. Set 예제 #include #include // set을 사용하기 위한 해더 void main() { //std::set coll; std::multiset coll; // 값의 삽입 순서와 상관없이 정렬됨. coll.insert(3); coll.insert(1); coll.insert(5); coll.insert(4); coll.insert(1); // 1은 이미 들어가 있기 때문에, // set일 때는 안들어 가고, multiset일때는 들어 간다. coll.inser.. 2010. 4. 8.
iterator - 반복자 vector나 deque같이 [] 를 통해 직접 값을 참조 할 수 있는 경우엔 괜찮지만, 그렇지 않은 경우 list나, set, map같은 경우는 []연산자를 사용 할 수가 없다. 그래서 존재하는것이 반복자, STL의 컨테이너들을 가르키는 포인터라고 이해하면 편하다(그렇다고 포인터와 똑같지는 않다.) iterator 예제 #include #include void main() { // 리스트 생성 std::list coll; // 값 삽입 for( char c='a'; c 2010. 4. 8.
시퀀스 컨테이너 - vector, list, deque 일단 vector와 deque는 동적 배열, list는 링크드 리스트 구조 라고 보면 될듯 하다. vector는 stack구조, deque는 queue구조 라고 볼 수 있는데. 둘다 동적 배열의 기능으로써 데이터를 삽입하는 것에는 큰 차이가 없다. vector는 뒤에서 부터, deque는 앞, 뒤 양쪽에서 삽입이 가능하다. vector의 사용법. 다음은 deque의 사용법. list는 [] 참조가 불가능하고 나머지는 비슷하다. list를 참조하기 위해서는 반복자가 필요 하다. 일단 개념만 파악하기 위해 간단한 예제를 보자. 소스를 보면 데이터를 참조해서 출력하는것이 아닌, 단순히 최상위 데이터만 확인, 데이터를 하나씩 pop하고 있다. 일단 저런식으로 사용한다는 것만 파악해 두자. 2010. 4. 5.
용어적 설명. 컨테이너 : 임의 타입 원소 집합. 동적 배열이나 링크드 리스트 처럼 구현이 되어있다. 반복자 : 원소 집합을 순회 하기 위해 사용 어떠한 컨테이너라도 공통 인터페이서 제공 컬렉션 클래스와 별개로 독립적으로 작동 포인터와 유사, ++연산, *연산이 가능 알고리즘 : 원소들의 처리를 위해 사용 모든 컨테이너에 공통적으로 적용 공통적으로 하나만 사용 유연성이 강하고, 사용자에 맞는 알고리즘 구현 가능 2010. 4. 5.