vector name;
typename可以是任何基本类型,int ,double char
结构体类型,类类型。
甚至还可以是STL标准容器,如vector,queue,set,map
等等。
- 二维都可变的数组。
vector<vector > name;
- vector数组
vector v[100];
注意二者的区别。
- 通过下标
vector v;
v[0];
v[1];
……
v[n-1]; //n为数组元素个数
- 通过迭代器(iterator)
vector::iterator it;
it就相当于是vector<typename>::iterator
类型的变量。
可以用过*it
的方式来访问元素
begin()
和 end()
begin()获取vector元素的首地址,
end()获取末尾元素的下一个地址(遵循左闭右开的原则)
for(int i=0;i<5;i++){
vec.push_back(i);
}
vector::iterator it = vec.begin();
for(int i=0;i<5;i++){
printf(“%d\n”,*(it+i));
}
由此可见,vec[i]
与*(vec.begin()+i)
的等价的。
注意:在STL容器里只有vector
和string
支持v.begin()+整数
的写法,因为其他容器的存储结构并不是线性的。
- 迭代器与
++
和!=
运算符
注意不能写成it<vec.end()
只能写成不等于。
for(vector::iterator it=vec.begin();it!=vec.end();it++){
printf(“%d\n”,*it);
}
- (1)
push_back()
作用:在vector尾部添加一个元素,时间复杂度O(1);
- (2)
pop_back()
作用:删除vector尾部的一个元素,时间复杂度O(1);
-
(3)
size()
,获取vector中元素的个数,时间复杂度O(1),不过注意返回的是unsigne int
类型。 -
(4)
clear()
,清空所有元素,时间复杂度O(N)。 -
(5)
insert(it,x)
,向vector任意迭代器的位置,插入一个元素,时间复杂度O(N)。注意第一个参数是迭代器,而不是整数。
说明,被插入的地方的元素以及它后面的所有元素(如果有)顺次向后移动一位。
insert(vec.begin(),x) //在首部插入元素x;
insert(vec.end(),x) //在尾部添加元素x,相当于 push_back(x);
-
(6)
erase()
-
(i)
erase(it)
删除迭代器it处的元素。
for(int i=0;i<5;i++){
vec.push_back(i+1);
}
vec.erase(vec.begin()+3); //,下标为3,删除的是第4个元素
for(int i=0;i<vec.size();i++){
cout<<vec[i]<<endl;
}
1
2
3
5
- (ii)
erase(begin,last)
的所有元素。
删除迭代器**[begin,last)**处的元素。注意左闭右开。
erase(vec.begin(),vec.end()) //删除*(vec.begin)……*(vec.end()-1);
// 也就是删除所有的元素。
========================================================================
头文件
#include //string.h是C语言中的。
写在最后
为了这次面试,也收集了很多的面试题!
以下是部分面试题截图
;
// 也就是删除所有的元素。
========================================================================
头文件
#include //string.h是C语言中的。
写在最后
为了这次面试,也收集了很多的面试题!
以下是部分面试题截图
[外链图片转存中…(img-K96aUWqI-1718807493866)]