顺序容器
头文件 #include<vector>
#include<list>
#include<deque> 双端队列
初始化:
C c(c2) 创建容器C2的副本,c 和c2 必须具有相同的容器类型,切存放相同的类型元素
容器元素类型必须满足条件:
1 元素类型必须支持赋值运算
2 元素类型的对象必须可以赋值
除引用类型为,所有的内置类型或复合类型都可做元素类型,因引用类型不支持一般意义的赋值运算
输入输出标准库类型,其他的标准库类型都是有效的容器元素类型
如果容器储存类类型的对象时,只有当其元素类型提供默认构造函数时,容器才能使用这种构造函数:(n,t),
迭代器的运算:
list容器的迭代器不支持算数运算(加法减法) 也不支持关系运算(<=,<,>=,>),只提供前置和后置的自增,自减,以及相等,不相等运算
迭代器的范围:
first 指向容器中的第一个元素
last 执行容器中的最后一个元素的下一位置
对first反复做自增运算必须能够达到last,last绝对不能位于first之前
while(first != last)
{
++first;
头文件 #include<vector>
#include<list>
#include<deque> 双端队列
初始化:
C c(c2) 创建容器C2的副本,c 和c2 必须具有相同的容器类型,切存放相同的类型元素
容器元素类型必须满足条件:
1 元素类型必须支持赋值运算
2 元素类型的对象必须可以赋值
除引用类型为,所有的内置类型或复合类型都可做元素类型,因引用类型不支持一般意义的赋值运算
输入输出标准库类型,其他的标准库类型都是有效的容器元素类型
如果容器储存类类型的对象时,只有当其元素类型提供默认构造函数时,容器才能使用这种构造函数:(n,t),
迭代器的运算:
list容器的迭代器不支持算数运算(加法减法) 也不支持关系运算(<=,<,>=,>),只提供前置和后置的自增,自减,以及相等,不相等运算
迭代器的范围:
first 指向容器中的第一个元素
last 执行容器中的最后一个元素的下一位置
对first反复做自增运算必须能够达到last,last绝对不能位于first之前
while(first != last)
{
++first;
}
#include<string>
#include<iostream>
#include <vector>
#include<list>
#include<string>
using namespace std;
void ShowList(list<string> ls)
{
list<string>::iterator it;
for( it = ls.begin();it!=ls.end();it++)
{
cout<<*it<<endl;
}
cout<<"************************************"<<endl;
}
int main()
{
string str[3]= {"hello","world","12345"};
size_t words_size = sizeof(str)/sizeof(string);//计算数组长度
list<string> words2(str,str+words_size);
ShowList(words2);
//容器元素的插入
words2.push_back("456799");//在容器尾部插入一个元素
ShowList(words2);
words2.push_front("front");//在容器前段添加元素,返回void类型,只适用于list和deque
ShowList(words2);
list<string>::iterator its = words2.insert(words2.begin(),"789");//在容器迭代器指定位置之前插入元素,返回指向新插元素的迭代器
ShowList(words2);
string str2[2] = {"test1","test2"};
words2.insert(its,str2,str2+2);//在迭代器指向的位置插入一段元素
ShowList(words2);
//访问容器中的元素
cout<<words2.front()<<endl;//返回容器第一个元素的引用
cout<<"************************************"<<endl;
cout<<words2.back()<<endl;//返回容器最后一个元素的引用,对于vector和deque可通过c[n]或者c.at[n]来取得下标为n的元素的引用
cout<<"**************************************"<<endl;
//容器元素的删除
list<string>::iterator ite = words2.begin();
ite = words2.erase(ite);//删除迭代器ite所指向的元素,返回一个迭代器指向被删除的元素下一个元素
ShowList(words2);
list<string>::iterator itess = words2.begin();
itess ++;
itess ++;
words2.erase(ite,itess);//删除迭代器ite和ites之间的元素,返回一个迭代器指向被删除元素的后一个元素
ShowList(words2);
words2.clear();//删除迭代器中所有的元素
//赋值与swap
list<string> list2(4,"hello world");
words2 = list2; // 赋值操作先删除做操作数中的所有的元素,然后将有操作数中的元素插入到做操作数中,回事做操作数中的所有迭代器失效
ShowList(words2);
words2.swap(list2);//交换内容,word2中存放list2中的元素,list2中存放word2的元素
ShowList(words2);
ShowList(list2);
return 0;
}