표준 라이브러리가 제공하는 기능이 기본 언어에서 제공하는 기능보다 더 융통성 있고 사용하기 쉽다.
컨테이너 클래스
.==()
.!=()
.=()
.empty()
.size()
.clear()
.insert()
.erase()
.begin()
.end()
순차 컨테이너
.push_back()
.pop_back()
.back()
std::vector
std::list
반복자의 산술 계산을 지원하지 않는다.
::iterator
.begin()
.end()
std::deque
연관 컨테이너
std::map
std::mulitmap
std::set
std::multiset
iostream 반복자
#include <iterator>
#include <iostream>
#include <string>
using namespace std;
int main()
{
istream_iterator< string > is( cin );
istream_iterator< string > eof;
ostream_iterator< string > os( cout, " " );
...
}
파일 반복자
#include <iterator>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream in_file( "as_you_like_it.txt" );
ofstream out_file( "as_you_like_it_sorted.txt" );
if ( ! in_file || ! out_file )
{
return -1;
}
istream_iterator< string > is( in_file );
istream_iterator< string > eof;
ostream_iterator< string > os( out_file, " " );
...
}
표준 알고리즘
컨테이너 요소들을 다룬다.
여러 알고리즘은 그들이 사용하는 반복자들에 대해 어떠한 조건이 필요한지를 확실히 이해해야 한다.
#include <algorithm>
std::find(), std::find_if()
std::count()
std::max_element()
std::reverse()
std::copy()
std::transform()
std::remove_copy(), std::remove_copy_if()
std::remove(), std::remove_if() // 사이즈(?)는 변경하지 않는다.
std::partition(), std::stable_partition()
std::binary_search() // 순방향 반복자
std::sort() // 임의 접근 반복자
#include <numeric>
std::accumulate()
함수 객체(필터)
함수 객체(필터) 어댑터
바인더 어댑터
bind1st
bind2nd
부정자 어댑터
반복자 삽입자 어댑터
std::back_inserter()
std::inserter()
std::front_inserter()