顺序容器:
vector:数组
list:链表
deque:双端数组
顺序容器适配器:
stack:堆栈
queue:队列
priority_queue:优先级队列
deque是一个动态数组
deque与vector非常类似;
deque可以在在数组开头和末尾插入和删除数据;
#include <deque>
#include <algorithm> deque<int>::iterator iElemetnLocater;
for(iElementLocater a.begin();
iElementLocater != a.end();
++iElemetLocater){
//distance函数
size_t nOffert = distance(a.begin(), iElementLocater);
cout << "a["<<nOffset<<"]" <<*iElementLocater << endl; }
list 类模板:
vector向量只能在末尾插入数据;
deque可以在开头和末尾拆入;
顺序容器 STL list类(双向链表)
list是一个模板类;
在list开头插入元素;
在list末尾插入元素;
在list中间插入元素;
删除list中的元素;
对list中元素进行反转和排序;
#include <iostream>
#include <list> using namespace std; int main()
{
std::list<int> a;
std::list<list>::iterator iter; a.push_front(); //头插
a.push_front();
a.push_front();
a.push_front();
a.push_back(); //尾插 iter = a.begin();
++iter;
a.insert(iter, ); //通过迭代器位置的改变来插入数据;
//在末尾拆入4个20
a.insert(a.end(), , ) for(std::list<int>::iterator it=a.begin();
it!=a.end();it++){
std::cout << *it << std::endl;
}
return ;
}
#include <vector>
#include <list>
#include <deque> using namespace std; int main()
{
vector<string> s_vec;
s_vec.push_back("hello");
s_vec.push_back("c++");
s_vec.push_back("STL"); //利用迭代器,vector初始化list
list<string> slist(s_vec.begin(), s_vec.end()); const list<int>::size_type list_size =;
list<string> slist(list_size, "hello"; list<int> I_list; vector<int> ivec; //默认构造函数
ivec.push_back();
ivec.push_back();
ivec.push_back(); vector<int> ivec2(ivec); //使用ivec初始化ivec2;
vector<int> ivec2(ivec); //使用ivec初始化ivec2; char *words[] = {"stately", "plump", "buck"};
size_t words_size = sizeof(words)/sizeof(char*); //利用指针 数组初始化list容器
list<string> words(words, words+words_size): const list<int>::size_type list_size = ;
list<string> slist(list_size, "hello"); //list里面64个hello;
list<int> ilist(list_size); //ilist默认64个0; vector<Foo> a; //不进行初始化,不用调用Foo的构造函数;
vector<Foo> b(, ); //进行了初始化,而且调用的是带参数的构造函数; vector<vector<string> > lines; //vector里面存放vector
list<vector<string> > list_lines; //list里面存放vector //list<int> ilist(ivec); //Error;
return ;
}