虽然用了好久的STL容器,但有些用法还是需要上网查,干脆就整理一下记住。
vector百度翻译为向量,,在STL中,可以理解成有头有尾的变长数组,即存在begin()函数和end()函数。
目录
头文件:
#include<vector>
定义:
vector<typename> Vector_Name;
//等价于 a[SIZE]
vector<vector<typename>>Vector_Name;
//等价于 a[SIZE][SIZE]
//typename可以是int,double,float,char,还有结构体和STL容器
我们可以看出来,vector和数组是有很大的相似性的,vector我个人理解为变长的数组,同数组一样我们也可以通过下标来访问。
vector<int> nums;
for(int i = 0; i < nums.length(); i++){//length()是元素个数和size()同义
cout << nums[i];//输出元素值
}
vector是可迭代类型,那迭代,迭代器是什么?迭代器(iterator),是一种类似于指针的变量容器。
vector<int> ::iterator it;//it就是这个类型的一个变量
//就得到了一个迭代器it
我们可以通过*it来访问vector里的内容,所以我个人理解为一种指针。
vector的常用函数:
vector<int> nums;
for(int i = 0; i < 5; i++){
cin >> nums[i];
}
nums.push_back(5);//在vector的尾插入一个int类型的值5
nums.pop_back() ;//删除vector尾的最后一个元素
//pop_back()没有参数
cout << nums.size() << " " << nums.length();
//size()是当前vector容器真是占用的大小,即有几个容器
//元素个数或者是说元素个数
nums.clear();
//删除容器中的所有元素,时间复杂度O(N)
nums.insert(it, x);//在迭代器it处插入x,O(N)
nums.insert(nums.begin()+1, 3);
nums.erase(nums.begin()+2);//删除下标为2处的值
nums.erase(nums.begin()+1, nums.begin()+3);//删除从下标为1到下标为3的所有值
//erase和clear不一样,clear没有参数并且全部删除
nums.resize(10);
//resize()就是把英文单词翻译一下,重新分配大小,现在nums.length() == 10.前面5个元素值不变,后面的扩充的空间进行初始化
还有一个经常用到的,存储在vector中的数据,利用sort函数进行排序:
vector<int> nums;
sort(nums.begin(), nums.end());//默认升序排列