c++ 如何将一个vector内容赋值给另一个vector

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ 如何将一个vector内容赋值给另一个vector相关的知识,希望对你有一定的参考价值。

比如有vector A,B
A中的内容一直在变,每次得到A的内容后将内容赋值给B
B的作用就是把A每次的内容装到一起,该如何实现呢

大致有一下几种方法实现用于把一个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;//声明迭代器
for(it = v2.begin();it!=v2.end();++it)//遍历v2,赋值给v1
     v1.push_back(it);

参考技术A 你的说法有矛盾啊。
“每次得到A的内容后将内容赋值给B”,就是B = A了;
而“B的作用就是把A每次的内容装到一起”,意思是,每次都把A里面的内容加到B里面。
到底是哪种?
比如vector<int> A, B;
如果是第一种情况,就是:B = A;或者B.assign(A);
如果是第二种情况,就是B.insert(B.end(), A.begin(), A.end());追问

就是说比如A的内容依次分别为1,2,3
那么最后B中的内容就应该为1,2,3,包含A每次出现的内容,请问该怎么实现呢

追答

就是说,A刚开始为1,然后操作后B也为1;
第二次A的内容变成了2,操作后B的内容就是1,2
第三次A的内容变成了3,操作后B的内容就是1,2,3
那么这就是每次把A的内容,完全加到B里面,就是第二种情况。
B.insert(B.end(), A.begin(), A.end());

本回答被提问者采纳

关于C++ vector的拷贝

定义了vector变量,在使用时直接用了等号赋值,后来发现有问题,就查了一下vector怎么赋值?

说明:vector是一个构造对象,不能直接使用=符号进行复制,必须迭代每个元素来复制。或者重载=操作符。

 

赋值方法:大致有以下几种方法实现用于把一个vector复制给另一个vector:

//方法1:
vector&amp;lt;int &amp;gt; v1(v2);//声明


//方法2:使用swap进行赋值:
vector&amp;lt;int &amp;gt; v1();v1.swap(v2);//将v2赋值给v1,此时v2变成了v1


//方法3:使用函数assign进行赋值:
vector&amp;lt;int &amp;gt; v1;//声明v1
v1.assign(v2.begin(), v2.end());//将v2赋值给v1


//方法4:使用循环语句赋值,效率较差
vector&amp;lt;int &amp;gt;::iterator it;//声明迭代器
for(it = v2.begin();it!=v2.end();++it){//遍历v2,赋值给v1
v1.push_back(it);
} 

以上是关于c++ 如何将一个vector内容赋值给另一个vector的主要内容,如果未能解决你的问题,请参考以下文章

C++ 如何将一个vector内容赋值给另一个vector?(注意:用等号赋值,有坑!过了生命周期就不行了)

[C++][ubuntu]C++如何将char*赋值给另一个char*

关于C++ vector的拷贝

C# 集合怎么赋值给另一个集合

C#中怎样用list<vector3>给另一个同类型的list赋值

C++ 怎么把string对象赋值给istringstream对象呢?