#include #include #include using namespace std; int main() { int a[3][3]={1,2,3,4,5,6,7,8,9}; vector v(a[0],a[3]); //二维数组其实存储也是线性的 vector::iterator it; int item=5; //假如删除5 for(it=v.begin();it!=v.end();it++) { i...。
大致有一下几种方法实现用于把一个vector赋值给另一个vector:
方法1:
vector<int > v1(v2);//声明。
方法2:使用swap进行赋值:
vector<int > v1();v1.swap(v2);//将v2赋值给v1,此时v2变成了v1。
方法3:使用函数assign进行赋值:
vector<int > v1;//声明v1。
v1.assign(v2.begin(), v2.end());//将v2赋值给v1。
方法4:使用循环语句赋值,效率较差。
vector<int >::iterator it;//声明<a href="https://www.baidu.com/s?wd=%E8%BF%AD%E4%BB%A3%E5%99%A8&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3nAu-ujFWuHm4PjfYnHD10ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EPHDdnjmsnHD4" target="_blank" class="baidu-highlight">迭代器</a>。
for(it = v2.begin();it!=v2.end();++it){//遍历v2,赋值给v1。
v1.push_back(it);。
vector只是个容器啊,它仅是存储物件而已,并不能初始化行与列的哇。你要负责自己插入元素的。
你说的vector<int> vi(10),这种形式的初始化只是适用于顺序初始化容器,而且,虽然它的作用有点像是指定了个数,但是,其实它是初始化了10个为0的物件,vector本身还是容器,不要把它理解为矩阵还是几维几维的东西,用容器如果纯粹是来处理数组做的事情,那就不是使用容器的意义了。所以你说到了什么二维要来指定几乘几的,就不可以了,因为它只是存储物件的东西,你在一维的时候,你只能告诉它你存储的是什么,而不能具体到告诉它我要你实现存储的物件要怎样怎样的功能。
当然,可以变相的实现这个功能,比如5×5的,vector<vector<int> >vi,那你将vi初始化5个物件,每个物件又是一个存放5个数据的物件,不就可以了么。
给出个实现的方法。
std::vector< std::vector<int> > vi; 。
for( std::size_t ix = 0;ix != 5;++ix ) 。
{
for( std::size_t jx = 0;jx != 5;++jx ) 。
vi[ix].push_back(0); 。
vector<vetor<CEdge*>> v 。
改为
vector<vetor<CEdge> > v。
就可以用v[i][j] 就可以访问。
void init(Graph &G)。
vector<int> v;。
for(int i=0;i<10;++i) v.push_back(0);。
for(int i=0;i<10;++i) G.push_back(v);。
原文地址:http://www.qianchusai.com/%E4%BA%8C%E7%BB%B4vector%E8%B5%8B%E5%80%BC.html