须知:在尖括号中定义你容器里的元素类型 eg:vector<int> name
1.概述
vector就是所说的向量,我们平时说vector是数组,其实应该区分开。向量是可以扩展的,数组是固定的大小。
2.begin(),end(),front(),back()
stl中的函数begin(),end()和front(),back(),第一个组合是返回容器中的首指针,和末指针,通过 *(begin())获取到第一个元素,可以通过 *(begin()+1)来访问第二个元素;end()区别于begin(),
End()指向vector中最后一个元素之后的一个位置(这意味着它不指向实际的元素,而是表示这是vector的末尾)。
因此,要使用指向最后一个元素,可以使用:.*(end() - 1)
,访问倒数第二个可以通过*( end()-2)。front()和back()可以直接获取第一个和最后一个元素。
3.访问方式at()
通过下标访问元素,尽量用.at(下标)访问,at()函数有异常处理机制,若超出向量大小不会报错。
4.动态增长.push_back()
,在向量末尾添加新元素(注意:只能是相同类型元素),用.push_back(新元素)
5.动态删除.pop_back()
,在向量末尾删除元素,用.pop_back()
元素通常只在 vector 的末尾添加和删除。如果需要从两端添加或删除元素,通常最好使用 deque 而不是 vector。
6.判断向量是否为空.empty()
,.empty(),如果为空返回true,如果为非空返回false
代码:
#include<iostream>
#include<ctime>
#include<vector>
int main(){
std::vector<int> nums = {1,2,3,4,5};
nums.push_back(6);
for(int i = 0;!nums.empty();i++){
for(int num:nums){
std::cout<<num<<" ";
}
nums.pop_back();
std::cout<<std::endl;
}
std::cin.get();
}
运行结果:
可以用emplace或者insert函数进行随机插入,在具体可以去emplace()和insert()查看一下,不同于list和forward_list,vector是连续内存存储,可以position顺序访问。在vector中,insert函数是插在position位置的数的前面的。