一、transform算法&lambda表達式
1、兩個重載版本
transform(first,last,result,op);//first是容器的首疊代器,last為容器的末疊代器,result為存放結果的容器,op為要進行操作的一進制函數對象或sturct、class。
transform(first1,last1,first2,result,binary_op);//first1是第一個容器的首疊代 器,last1為第一個容器的末疊代器,first2為第二個容器的首疊代器,result為存放結果的容器,binary_op為要進行操作的二進制函數 對象或sturct、class。(注意:第二個重載版本必須要保證兩個容器的元素個數相等才行,否則會抛出異常)
2、[函數對象參數] (操作符重載函數參數) mutable 或 exception 聲明 -> 傳回值類型 {函數體}
3、例子
int ones[] = { 1,2,3,4,5 };
int twos[] = { 10,20,30,40,50 };
int results[5];
transform(ones,ones+5,twos,results,std::plus<int>());
for_each(results,results+5,
[](int a)->void {
cout << a << endl; });
二、STL容器的統計與二分查找
int arr[] = { 0,1,2,3,4,5,6,6,7,7,7,8 };
vector<int>iA(arr + 2, arr + 6);
cout << count(arr, arr + sizeof(arr) / sizeof(arr[0]), 7) << endl;;
cout << count_if(arr, arr + sizeof(arr) / sizeof(arr[0]), bind2nd(less<int>(),7)) << endl;
cout << count_if(arr, arr + sizeof(arr) / sizeof(arr[0]), bind1st(less<int>(), 7)) << endl;
cout << binary_search(arr,arr+ sizeof(arr) / sizeof(arr[0]),9) << endl;
cout << *search(arr, arr + sizeof(arr) / sizeof(arr[0]), iA.begin(), iA.end()) << endl;
三、STL全排列(前提必須保證順序)
char test[] = "123";
do {
cout << test[0] << " " << test[1] << " " << test[2] << endl;
} while (next_permutation(test, test + 3));
char test[] = "321";
do {
cout << test[0] << " " << test[1] << " " << test[2] << endl;
} while (prev_permutation(test, test + 3));
四、疊代器
1、正向疊代器iterator;反向疊代器reverse_iterator;常量正向疊代器const_iterator;常量反向疊代器const_reverse_iterator
2、容器與疊代器

list<int>n;
n.push_back(3);
n.push_back(4);
n.push_front(2);
n.push_front(1);
list<int>::reverse_iterator it;
for (it = n.rbegin(); it != n.rend(); it++)
cout << *it << endl;
五、容器擴充卡
1、stack(底層deque)
2、queue
priority_queue<int>pq;//預設是最大值優先
priority_queue<int,vector<int>,greater<int>>pq2;//最小值優先
priority_queue<int, vector<int>, less<int>>pq3;//最大值優先