vector
一、特点
可变长数组,支持下标访问,在尾部之外的位置插入/删除元素较慢 |
---|
二、容器操作
1.初始化
vector<int>vec0{
1,2,3,3,2,1 }; //列表初始化
vector<int>vec1(10, 1); //vec1是含有10个int类型元素的容器,且每个元素初始化为1
vector<int>vec2{
10,1 }; //vec2含有两个int元素,10和1
vector<string>vec3(10, "hello");//vec3含有10个string类型的元素,每个元素都是字符串"hello"
vector<string>vec4{
10,"hello" }; //vec4和vec3一样
2.swap操作及探讨
swap从外观看两个容器的元素交换了,我们将打印两个容器的首元素地址观察交换前后有无变化
vector<string>vec3(10, "hello");
vector<string>vec4{
5,"world" };
cout << &vec3[0] << endl;//011FB758
cout << &vec4[0] << endl;//011FB8A0
swap(vec3, vec4);
//vec3.swap(vec4); 这样也可以哦
cout << &vec3[0] << endl;//011FB8A0
cout << &vec4[0] << endl;//011FB758
我们发现,swap之后,两个容器首元素地址也互换了,说明vector执行swap操作交换的是两个容器的数据结构,而不单单是值的交换! |
---|
3.增删元素和assign
push_back
vector<int>vec1{
1,2,3,4,5 };
vec1.push_back(100); //vec1: 1,2,3,4,5,100
insert
指定位置插入元素
vector<int>vec1{
1,2,3,4,5 };
//在指定位置的前面插入元素,返回插入元素的位置
vec1.insert(vec1.end() - 1, 99); //vec1:1,2,3,4,99,5
利用insert的返回值
//下面这个循环利用了insert的返回值,只要输入的tem