| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
学习型 ASP/PHP/ASP.NET 主机 35元/年全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
赛孚耐:软件保护加密专家身份认证令牌USB KEY  
共有 650 人关注过本帖
标题:[求助]vector用begin和end初始化的问题
收藏  订阅  推荐  打印 
kyan54
Rank: 2
等级:注册会员
帖子:100
积分:1100
注册:2006-4-7
[求助]vector用begin和end初始化的问题

int main()
{
vector<string> svec;
// ...
// 用svec 的全部元素初始化svec2
vector<string> svec2( svec.begin(), svec.end() );
// 用svec 的前半部分初始化svec3
vector<string>::iterator it =
svec.begin() + svec.size()/2;
vector<string> svec3( svec.begin(), it );
// 处理 vectors ...
}

这里是在c++primer第三版,223页,书上看到的。。

为什么这里用svec.begin(), svec.end() 可以初始化svec2??
那他怎么初始化的??
初始化后的值全都是0??

搜索更多相关主题的帖子: vector  begin  svec  end  string  
2007-6-5 12:48
aipb2007
Rank: 12Rank: 12Rank: 12
来自:CQU
等级:贵宾
威望:40
帖子:2881
积分:29414
注册:2007-3-18

书上应该有写,带一对迭代器的构造函数。
msdn上也有

Fight  to win  or  die...
2007-6-5 12:52
独孤风
Rank: 2
等级:注册会员
帖子:49
积分:590
注册:2006-11-7

看看c++primer 中文版吧。265页
初始化后当然为0了,你没有给vector<string> svec;它里面赋值,系统就认为它里面没有值
而你在给vector<string> svec2( svec.begin(), svec.end() );赋值的时候,系统就都给它们0的初始值了。

用心去感受程序的美妙,无忧无虑的探寻精彩.
2007-6-6 14:09
doom5211
Rank: 1
等级:新手上路
帖子:34
积分:440
注册:2007-6-7

vector类对象支持用另一个数组的指针来初始化,因为它不能像内置数组那样显式的初始化.此种初始化需要两个指针,第一个表示被用来初始化的数组的开始地址,第二个表示被用来初始化的数组的最后一个元素的后一个地址.这样初始化就相当于把Svec的元素全部赋值给Svec2了,而Svec缺省的值为0,故Svec2的值也全部为0.
另外Svec2赋值还可以只用到Svec的一部分元素.
最近也是才开始看C++ Primer的书,比以前看的C++ 书经典多了.属于菜鸟级,回复帖子纯粹让自己复习学过的东西.

2007-6-7 19:51
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.063788 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved