vector的赋值问题

Momo 2011-05-05 08:46:27
《C++ Primer第四版》第四章 数组 课后习题4.7
编写代码将一个数组赋给另一个数组,然后把这段代码改用vector实现。
考虑如何将一个vector赋给另一个vector。

请教:答案上说将一个vector赋给另一个vector也需要像数组一样,逐个元素赋值
vector<int> ivec1(10, 20);
vector<int> ivec2;
for(vector<int>::iterator iter=ivec1.begin(); iter!=ivec1.end(); ivec1++)
ivec2.push_back(*iter);

但是在第三章讲vector时不是说可以用已定义的vector初始化(或赋值)新定义的vector么?
我这样写行么?
vector<int> ivec1(10, 20);
vector<int> ivec2 = ivec1;
不是也算将ivec1赋给ivec2了么?

请教原因。初次发帖,有何不当,请多海涵,多谢大家!^_^
...全文
352 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Momo 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yfkiss 的回复:]

哈哈,都有第一次啊
vector可以用形如ivec2 = ivec1进行赋值
但需要注意的是,由于本质上是对每个元素调用拷贝构造函数,因此在对对象进行拷贝的时候,注意拷贝构造函数的编写。
[/Quote]
恩,这样说我明白了不少,还是基础不牢固啊,多谢大家的回答!O(∩_∩)O~
Freedom 2011-05-05
  • 打赏
  • 举报
回复
这样也可以赋值的
無_1024 2011-05-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yfkiss 的回复:]
哈哈,都有第一次啊
vector可以用形如ivec2 = ivec1进行赋值
但需要注意的是,由于本质上是对每个元素调用拷贝构造函数,因此在对对象进行拷贝的时候,注意拷贝构造函数的编写。
[/Quote]
记得C++里面有这么一句话 = 就是逐个元素的值拷贝
yfk 2011-05-05
  • 打赏
  • 举报
回复
哈哈,都有第一次啊
vector可以用形如ivec2 = ivec1进行赋值
但需要注意的是,由于本质上是对每个元素调用拷贝构造函数,因此在对对象进行拷贝的时候,注意拷贝构造函数的编写。
ljt3969636 2011-05-05
  • 打赏
  • 举报
回复
这种问题自己试下就清楚了,相信事实...
pengzhixi 2011-05-05
  • 打赏
  • 举报
回复
template <class InputIterator>
vector ( InputIterator first, InputIterator last, const Allocator& = Allocator() );
vector ( const vector<T,Allocator>& x );
pengzhixi 2011-05-05
  • 打赏
  • 举报
回复
调用的是拷贝构造函数呗
ljt3969636 2011-05-05
  • 打赏
  • 举报
回复
e....答案不是原书作者写的
vector<int> ivec1(10, 20);
vector<int> ivec2 = ivec1;
确实可以...

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧