C++标准模板库(STL)
头文件
STL是C++的一部分,因此不用额外安装什么,它被内建在你的编译器之内。
被组织在以下13个头文件:
<algorithm>
<deque>
<functional>
<iterator>
<vector>
<list>
<map>
<memory>
<numeric>
<queue>
<set>
<stack>
<utility>
STL包含六大组件:
- 容器(Container)
- 算法(Algorithm)
- 迭代器(Iterator)
- 仿函数(Function object)
- 适配器(Adaptor)
- 空间配制器(allocator)
容器
1. 向量(vector)
// includes
#include <iostream>
#include <vector>
// namespace
using namespace std;
// main
int main(int argc, char* argv[])
{
// init a vector from a array
vector <char> vec;
char str[] = "Hello World";
char* pStr = str;
while (*pStr != '\0')
{
vec.push_back(*pStr);
pStr++;
}
// use a iterator to visit vector
vector <char>::iterator it;
for (it = vec.begin(); it != vec.end(); it++)
{
cout << *it;
}
cout << endl;
return 0;
}
2. 链表(list)
// includes
#include <list>
#include <iostream>
#include <algorithm>
#include <iterator>
// namespace
using namespace std;
// printList
void printList(const list<int>& list1,const list<int>& list2)
{
cout << "list1:";
copy(list1.begin(),list1.end(),ostream_iterator<int>(cout," "));
cout << endl<<"list2:";
copy(list2.begin(),list2.end(),ostream_iterator<int>(cout," "));
cout << endl<<endl;
}
// main
int main()
{
// init list1, list2
list<int> list1, list2;
for (int i = 0; i < 6; ++i)
{
// add a node from tail
list1.push_back(i);
// add a node from head
list2.push_front(i);
}
printList(list1,list2);
// sort list2
list2.sort();
printList(list1,list2);
// merge lists
list2.splice(find(list2.begin(),list2.end(),3),list1);
printList(list1,list2);
system("pause");
return 0;
}