赞
踩
C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,可在不知道所需要的数组大小的情况下使用,极大的节省了空间。
使用前需加上头文件
#include<vector>
vector< int > 变量名
vector< int > a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)。
vector< vector< int> >a;(等于声明了一个int类型的二维数组a)
1.vector指定大小
vector<int>a(num);//初始化SIZE大小为num,默认值为0
2.指定大小并赋相同初值
vector<int>a(num,5)//初始化SIZE为num,初始值为5
3.二维vector指定大小
vector<vector<int>>a(num1);//指定行数为num1
for(int i=0;i<a.size();i++)
{
a[i].resize(num2);//指定每行的列数,每行的列数可以不同
//a[i].resize(num2,5);//指定列数并赋初值为5
}
定义一个vector< int >c
c.clear() 移除容器中所有数据。 c.empty() 判断容器是否为空。 c.erase(pos) 删除pos位置的数据 c.erase(beg,end) 删除[beg,end)区间的数据 c.front() 传回第一个数据。 c.insert(pos,elem) 在pos位置插入一个elem拷贝 c.pop_back() 删除最后一个数据。 c.push_back(elem) 在尾部加入一个数据elem。 c.resize(num) 重新设置该容器的大小为num c.size() 回容器中实际数据的个数。 c.begin() 返回指向容器第一个元素的迭代器 c.end() 返回指向容器最后一个元素的迭代器 c.assign(beg,end):将[beg; end)区间中的数据赋值给c。 c.assign(n,elem): 将n个elem的拷贝赋值给c。 c.at(idx): 传回索引idx所指的数据,如果idx越界,抛出out_of_range。 c.back(): 传回最后一个数据,不检查这个数据是否存在。 c.front(): 传回地一个数据。 get_allocator: 使用构造函数返回一个拷贝。 c.rbegin(): 传回一个逆向队列的第一个数据。 c.rend(): 传回一个逆向队列的最后一个数据的下一个位置。 c.~ vector < Elem >():销毁所有数据,释放内存。
vector<int>a(5,1);//初始化size为5,初始值为1
//第一种用法(用下标)
for(int i=0;i<a.size();i++)
cout<<a[i]<<endl;
//第二种用法(用迭代器)
for(auto item=a.begin();item!=a.end();item++)
cout<<item<<endl;
//第三种用法(简化数组遍历语法(从vs2008开始支持))
for each(auto item in a)
cout<<item<<endl;
//第四组用法(STL函数)
std::for_each(a.begin(),a.end(),[](int item){cout<<item<<endl;})
//第五种用法(C++11新增加的(VS2012支持))
for(auto item:a)
cout<<item<<endl;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。