Vector 变长数组
创建
vector<int> num;
vector<char> num;
vector<node> num; //结构体
vector<vector<int> > num;
vector<int> num[100];
访问
!!! 美国人思维是左闭右开
num的下标范围是num.begin()~num.end()-1,即end()是尾元素的下一个地址
- 通过下标直接访问
vector<int> num;
for(int i=0;i<10;i++)
{
num.push_back(i);
}
for(int i=0;i<10;i++)
cout<<num[i]<<" ";
- 通过迭代器访问
vector<int> num;
for(int i=0;i<10;i++)
{
num.push_back(i);
}
for(vector<int>::iterator it=num.begin();it!=num.end();it++)
// 不可以用it<num.end()
// 只有vector和string才可以用num.begin()+1这种迭代器加上整数的写法
cout<<*it<<" ";
常用函数
- push_back() 在vector后面添加一个元素
vector<int> num;
for(int i=0;i<10;i++)
{
num.push_back(i);
}
for(int i=0;i<10;i++)
cout<<num[i]<<" ";
- pop_back() 删除vector的尾元素
vector<int> num;
for(int i=0;i<10;i++)
{
num.push_back(i);
}
for(int i=0;i<10;i++)
cout<<num[i]<<" ";
cout<<endl;
for(int i=0;i<5;i++)
{
num.pop_back();
}
for(vector<int>::iterator it=num.begin();it!=num.end();it++)
cout<<*it<<" ";
- size() vector中元素个数 unsigned类型
vector<int> num;
for(int i=0;i<10;i++)
{
num.push_back(i);
}
for(int i=0;i<5;i++)
{
num.pop_back();
}
cout<<num.size();
- clear() 清空vector
vector<int> num;
for(int i=0;i<10;i++)
{
num.push_back(i);
}
num.clear();
cout<<num.size();
- insert() insert(it,x)向it处插入元素x
vector<int> num;
for(int i=0;i<10;i++)
{
num.push_back(i);
}
num.insert(num.begin()+1,99);
for(int i=0;i<num.size();i++)
cout<<num[i]<<" ";
- erase()
删除单个元素 erase(it)
vector<int> num;
for(int i=0;i<10;i++)
{
num.push_back(i);
}
num.erase(num.begin()+1);
for(int i=0;i<num.size();i++)
cout<<num[i]<<" ";
删除一个区间内[first,last)的所有元素 erase(first,last)
vector<int> num;
for(int i=0;i<10;i++)
{
num.push_back(i);
}
num.erase(num.begin()+1,num.end());
for(int i=0;i<num.size();i++)
cout<<num[i]<<" ";
- resize() 改变容器大小
vector<int> num;
num.resize(1000);
cout<<num.size();