一、STL標準模板庫的組成
STL包括:
容器(containers)、迭代器(iterator)、算法(algorithm)、函數對象、函數適配器
二、容器
1、分類
順序容器:
1、vector ->向量數組
2、deque-> 隊列
3、list 鏈表
關聯容器:
4、map ->二叉樹 //4、5鍵值必須不同
5、set ->集合
6、multiset //6、7允許有多個一樣的鍵值
7、multimap
2、vector容器
優缺點:一個可擴展的數組,隨機訪問,末尾快。
vector<int>s1,s2;
s1.begin() //容器的第一個元素的位置
s1.end() //容器的最後一個元素後面的位置
S1.Clear() //清空容器
S1.empty() //檢查容器是否爲空
S1.Size() //獲得容器的大小
S1.swap(s2) //交換s1和s2容器中的內容
3、deque容器
優缺點:可兩端插入元素,兩端快,中間墁。
4、list容器
優缺點:在任意位置插入和刪除都很快,不支持隨機訪問
三、迭代器
1、指針是迭代器中的一種。迭代器是泛化的指針。
2、迭代器分爲輸入迭代器(只讀、istream_iterator)、輸出迭代器(只寫、ostream_iterator)、前向迭代器(輸入+輸出、線性、單向遍歷)、雙向迭代器、隨機訪問迭代器(deque、vector)
兩個迭代器表示一個區間:[p1,p2)
輸入迭代器:
輸出迭代器:
ostream_iterator<int>(cout, " 分隔符")
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;
double square(double x)
{
return x*x;
}
int main()
{
transform(istream_iterator<double>(cin), istream_iterator<double>(), ostream_iterator<double>(cout, " "), square);
cout << endl;
system("pause");
return 0;
}
一個簡單的代碼:
#include <stdlib.h>
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <functional>
using namespace std;
template<class T>
class square
{
public:
T operator()(T &t) //重載()實現特殊作用
{
return t*t;
}
};
int main()
{
const int N = 5;
vector<int> s(N);
for (int i = 0; i < N; i++)
{
cin >> s[i];
}
transform(s.begin(), s.end(), ostream_iterator<int>(cout, " "), negate<int>()); //negate 屬於算法取反
cout << endl;
system("pause");
return 0;
}