序列容器:
vector 矢量容器 vector<int> mydata后面若有(100)表明是100个元素
(100,-1)100个元素都是-1
mydata[2]=999
mydata.push_back(99)
mydata.pop_back()删除最后一个元素
mydata.clear()删除所有元素
慢!mydata.erase(mydata.end()-2)删除倒数第二个元素
mydata.erase(mydata.begin()+1,mydata.begin()+4)删除第2,3,4个元素(不包括最后一个)
慢!mydata.insert(mydata.begin()+1,88)在第一个元素后面插入88
mydata.insert(mydata.begin()+1,2,88) 第一个元素后面插入两个88
insert(1,2,3)2-3的东西插入到1(不包括3,最后一个)
mydata1.swap(mydata2)内容大小全部交换
mydata.assign(values.begin()+1,values.end()-1)替换(第二个迭代器不包括最后一个元素)
mydata.assign(30,99.5)替换成30个99.5
mydata.reserve(100)创建容器后使之提供足以容纳100个元素的内存,仅当添加第101个元素时才会自动增加容量。每次增加当前容量的一半
vector<double> mydata(data,data+8);data是数组名,data是数组中的第一次初始化元素(mydata.begin()),data+8(mydata.end())是最后一个初始化元素的下一个位置,即把data[0]到data[7]的值赋给mydata
容量capacity
大小size
vector<double>::size_type某变量名= mydata.capacity()
mydata.empty()
mydata.at(i)下标超过范围时会抛出out_of_range的异常
mydata[i]不会抛出异常
mydata.front()第一个元素
mydata.back()最后一个
const int &firstvalue=mydata.front()可以返回const引用,防止修改对象
int &firstvalue=mydata.front()也可以
只要随机访问迭代器包含的对象可以用<来比较,algorithm 头文件中定义的sort()就可以对随即访问迭代器的容器的内容进行排序(降):sort(mydata.begin(),mydata.end())同时需要#includealgorithm头文件和using std::sort。也可以排序data数组sort(data,data+count)。Sort也可以和functional头文件一起进行升序等
deque双端队列容器
不同的是它可以在序列在开头添加或删除push_front pop_front但是比矢量容器慢
list列表可以push_front push_back也可以mydata.insert(表示位置的数字或者迭代器,77)但是由于不能访问任意位置的元素,所以想得到第8个元素的迭代器,就要从1开始不停加到第8个
由于不可以随意访问任何位置,所以list<T>模板定义自己的sort函数
mydata.remove(22)删除所有等于22的元素
mydata.unique()消除相邻重复元素
mydata.splice(迭代器1,mydata2)迭代器1处插入mydata2
mydata.splice(迭代器1,mydata2,迭代器2)迭代器1处插入:mydata2从迭代器2开始的元素,并且mydata2中删除对应元素
mydata.splice(迭代器1,mydata2,迭代器2,迭代器3) 代器1处插入:mydata2从迭代器2开始到迭代器2结束的元素,并且mydata2中删除对应元素
mydata1.merge(mydata2)把mydata2合并到mydata1后整体以升序排列,mydata2变空
queue 队列容器先进先出,只能向队列的末尾添加或开头删除
back,front,push后端添加,pop前端删除,size,empty.
priority_queue 优先级队列容器默认基于vector只能访问前端元素
top(不能访问队列后端,只能访问前端),push,pop,size,empty
最先进去的地方应该是top,(若用greater定义,则top是最小的)
【char *firstname,secondname:要动态分配内存,需定义赋值运算符=,
stringfirstname,secondname:不要,不需
】
Stack栈容器默认基于deque,后进先出
top,push,pop,size,empty
array<T,N>数组容器
std::array<int,10>mydata={1,2,3,4,5}
可以用迭代器遍历,也可以像普通数组那样用索引遍历
typedefstd::tuple<int,std::string,std::string,int> Record;
std::array<Record,5> mydata={Record{1001,”Joan”,”Jetson”,35} ,
Record{1002,”Jim”,”Jones”,26},
}
Mydata[2]=std::make_tuple{1003,”Jean”,”Jorell”,29}添加元素
get<0>(1);mydata[1]的第0项