首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

将一个vector 赋给另一个vector解决思路

2012-03-23 
将一个vector 赋给另一个vectorC/C++ code//我试了下,可以直接这样子做 ivec2ivec1,就可以实现了。为什么

将一个vector 赋给另一个vector

C/C++ code
//我试了下,可以直接这样子做 ivec2=ivec1,就可以实现了。为什么还要像下面那样子一个一个去push_back将一个vector 赋给另一个vector,也是将一个vector 的元素逐个赋值给另一vector 的对应元素,可用如下代码实现://将一个vector 赋值给另一vector//使用迭代器访问vector 中的元素#include <vector>using namespace std;int main(){vector<int> ivec1(10, 20);//每个元素初始化为20vector<int> ivec2;for (vector<int>::iterator iter = ivec1.begin();iter != ivec1.end(); ++iter)ivec2.push_back(*iter);return 0;}


[解决办法]
ivec2=ivec1,就可以实现了,此时调用的是 vector<int>::vector(const vector<int> &r)这个拷贝构造函数,是直接应用就可以了,不需要逐个赋值(但是如果是vector<int *>这样的含有指针数据的要另当别论)
你贴的那个代码可能是题目的要求吧
[解决办法]
对于顺序容器来说 a1 = a2;相当 于(a1.assign(a2.begin,a2.end()))执行了这样的操作:删除容器a1的所有元素,然后将a2的元素复制给a1 。限制 是a1 和a2的元素必须相同 。
在这个程序中作用是与for循环相同的 但如果ivec2中有值的话 作用就不一样了
[解决办法]
要看这个容器的value_type是什么 是否支持
[解决办法]
直接赋值不就得了。。。。
[解决办法]
不仔细看帖子

指针类型
楼上回答你了




容器都重载了=, 所以不涉及指针成员的时候,可以直接=


探讨

引用:

要看这个容器的value_type是什么 是否支持


请问什么value_type支持,什么不支持呢?

[解决办法]
vector 有个函数assign, 赋值操作,

assign会清空你的容器,

测试代码:
vector<int>v(10);

for(int nPos=0;nPos<3;nPos++)
v.push_back(nPos);

copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
cout<<endl;
v.assign(5,34);
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
[解决办法]
你这代码说不定是有特殊要求的。。 目前看是一样的。

热点排行
Bad Request.