资料地址:http://blog.chinaunix.net/uid-24219701-id-2181266.html
一、简介
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。
STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器)。
容器:是可容纳一些数据的模板类;
算法:就是处理容器里面数据的方法、操作;
迭代器:遍历容器中数据的对象(它将算法和容器连在一起)。
二、容器实例
1)list,vector,deque- - 队列容器;
2)set,multisets,map,multimaps - - 关联容器;
1. 向量(vector)
1)初始化实例
<span style="font-size:14px;">//vector初始化实例
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
int ar[10] = {12, 45, 234, 64, 12, 35, 63, 23, 12, 55};
char* str = "Hello World";
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> vec1(ar, ar+10);
vector<char> vec2(str, str+strlen(str));
cout << "vec1:";
for (vector<int>::const_iterator p1 = vec1.begin(); p1 != vec1.end(); ++p1)
cout << *p1;
//&表示取地址,是取地址;
//*是指针,是取地址的内容;
cout << '\n' << "vec2:";
for (vector<char>::const_iterator p2 = vec2.begin(); p2 != vec2.end(); ++p2)
cout << *p2;
cout << '\n';
system("PAUSE");
return 0;
}</span>
2)操作实例
//vector操作实例
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> vec1;
vector<int> vec2(10, 6);
vector<int> vec3(vec2.begin(), vec2.begin() + 3);
vector<int>::iterator i;
//按顺序显示vec1
cout << "vec1.begin() ~ vec1.end():"<<'\n';
for (i = vec1.begin(); i != vec1.end(); ++i)
cout << *i << " ";
cout << endl;
vec1.push_back(2); //在最后添加一成员
vec1.push_back(4);
vec1.insert(vec1.begin()+1, 5);//在vector第1+1个位置上插入"5"
vec1.insert(vec1.begin()+1, vec3.begin(), vec3.end());
cout << "after push and insert,vec1 is :"<<'\n';
for (i = vec1.begin(); i != vec1.end(); ++i)
cout << *i << " ";
cout << endl;
vec2.assign(8, 1); //重新给vec2赋值,8个成员初始值都为1(全部重新赋值)
cout << "vec2.assign(8,1) is :" << '\n';
for (i = vec2.begin(); i != vec2.end(); ++i)
cout << *i << " ";
cout << endl;
cout << "vec1.front() is :" << vec1.front() << endl;
cout << "vec1.back() is :" << vec1.back() << endl;
cout << "vec1.at(4) is :" << vec1.at(4) << endl; //和数组类似,实际是第5个
cout << "vec1[4] is:" << vec1[4] << endl;
vec1.pop_back();
vec1.erase(vec1.begin()+1, vec1.end()-2);
cout << "after pop and erase(vec1.begin()+1, vec1.end()-2),vec1 is :" << '\n';
for (i = vec1.begin(); i != vec1.end(); ++i)
cout << *i << " ";
cout << endl;
//vec1.size();
//vec1.empty();
system("PAUSE");
return 0;
}
待续。。