头文件:
<vector>
定义:
vector<int> num[n]; //开辟一个长度为n的数组
vector<int> num(n);
vector<vector<int> > arr; //二维动态数组,注意第二个'>'后面有一个空格
vector<int> arr;
注意点:
如果使用带中括号的定义方式,则定义的数组是动态数组,不能用等号赋值,也不能使用size()函数
如果使用带小括号的定义方式,则定义的数组是定长数组,同时不能使用push_back函数和emplace_back函数
初始化:
vector<int> arr(n,0);//开辟一个长度n的数组,并将其初值赋为0
拷贝初始化: vector<int> arr(list) / vector<int> arr = list;
常用功能:
1、push_back(element)//在尾部加入一个元素element
2、emplace_back(element)//在序列尾部生成一个元素(element)
3、pop_back()//删除尾部元素
4、size()//返回数组大小
5、resize()//重新设置数组大小
6、empty()//判断数组是否为空
7、clear()//清除数组
8、erase(first,last)//擦除[first,last)的元素
9、front()//返回数组的第一个元素
10、back()//返回数组的最后一个元素
11、遍历:
for(auto i : num)//for(int i : num)
cout<<i<<endl;
迭代器:
begin() end()//正序可读可修改迭代器
cbegin() cend()//只可访问迭代器
rbegin() rend()//反向迭代器
//用法:
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> values {1,2,3,4,5};
//vector<int> values = {1,2,3,4,5};
auto first = values.begin();
auto end = values.end();
while (first != end){
//*first = 10;修改元素
cout << *first << " ";
first++;
}
return 0;
}
注:在低版本的Dev-C++中不能使用智能指针,同时也不能使用上面的那种方式初始化;遍历方法可以改为下面这种方式:
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> values {1,2,3,4,5};
vector<int>::iterator first = values.begin();
//vector<int>::const_iterator first = values.begin();
while (first != values.end()){
//*first = 10;修改元素
cout << *first << " ";
first++;
}
return 0;
}