#include<algorithm>
알고리즘은 전역 함수의 형태로 제공되어지는 함수 템플릿임.
오늘은 3~4개만 배우고 더 필요하면 MSDN에서 찾아볼 것.
-
[*] sort : 정렬 알고리즘
sort(): 매개 변수 3개를 요구함 (begin, end, 조건자) 원하는 범위 내에서 조건자를 통해서 정렬 진행. (조건자 삽입하지 않을 경우 오름차) (퀵 정렬 기반으로 구성되어 있는데, 여러 정렬도 함께 구현되어 있음) -
[*]
count_if: 조건자 참의 개수를 반환함.int iCount = count_if(vec.begin(), vec.end(), 조건자); -
[*]
for_each: 컨테이너의 모든 요소에 대해 주어진 함수(조건자)를 “적용”하는 반복문for_each(vec.begin(), vec.end(), Safe_Delete);벡터 안에 모든 원소를 딜리트하는 것. (즉 위와 다르게 bool타입이 아닐 수 있음.) -
[*]
find_if: 조건자에 해당하는 원소를 찾는 알고리즘 반환타입이 iterator임.vector<int>::Iterator iter=find_if(vec.begin(), vec.end(), 조건자)찾는 원소가 없을 경우, end 이터레이터를 반환한다.
함수 객체와 람다와 유용하게 섞어서 사용할 수 있게 됨.
#include<functional> : c++언어 에서 제공하는 조건자 모음
리스트는 양방향(혹은 단방향) 연결 구조체다.
노드 ←>노드 ←>노드 와 같은 형태.
#include <list>
list<int> intlist;
intlist.push_back(19);
intlist.pop_back();
intlist.push_front(19);
intlist.pop_front();
for(list<int>::iterator iter; iter != intlist.end(); ++iter){
*iter; //로 순회
}멤버함수로 sort가 존재함 (디폴트 오름차 순/ 조건자 삽입 가능)
intlist.sort(greater<int>());
원소들의 순서를 역순으로 바꾸는 함수.
intlist.reverse();
값이 일치하는 원소를 “모두” 삭제하는 함수
intlist.remove(1);
intlist.remove_if(조건자); // 조건자에 해당하는 원소를 삭제하는 함수
특정 리스트를 오려넣기 하는 함수.
intlist.splice(이터레이터, 삽입할리스트);
(intlist의 iterator 위치에, 2번째 매개인자에 오려넣기 하는 함수임. 원본은 삭제되는 것. )
List에 forward_list 추가됨
기존에 사용하던 정적 배열을 객체화 시킴 그래서 생성자/소멸자/복사생성자/대입연산자를 지원함.
int iArray[5] = {1,2,3,4,5}; //기존
array<int,5> arrEx = {10,20,30,40,50}; //STL
굳이 쓰는 이유는 멤버 함수들을 지원하니까 (size(), empty(), swap() 혹은 대입 연산자) 단, 삽입 삭제 계열의 함수들은 존재하지 않는다.
과거 포인터에 배열의 이름을 넣는 것처럼 활용하는 방법
int * ptr = arrEx.data();
배열의 모든 원소를 매개 변수로 채우는 함수
arrEx.fill(999);
deque Deque 별거 없음 벡터보다 8배 정도의 크기를 가지고 있음. 속도를 위해 메모리를 희생하는 방식.