标题:[求助]vector用begin和end初始化的问题
只看楼主
kyan54
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-4-7
 问题点数:0 回复次数:3 
[求助]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-06-05 12:48
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
书上应该有写,带一对迭代器的构造函数。
msdn上也有

Fight  to win  or  die...
2007-06-05 12:52
独孤风
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-11-7
得分:0 
看看c++primer 中文版吧。265页
初始化后当然为0了,你没有给vector<string> svec;它里面赋值,系统就认为它里面没有值
而你在给vector<string> svec2( svec.begin(), svec.end() );赋值的时候,系统就都给它们0的初始值了。

用心去感受程序的美妙,无忧无虑的探寻精彩.
2007-06-06 14:09
doom5211
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-6-7
得分:0 
vector类对象支持用另一个数组的指针来初始化,因为它不能像内置数组那样显式的初始化.此种初始化需要两个指针,第一个表示被用来初始化的数组的开始地址,第二个表示被用来初始化的数组的最后一个元素的后一个地址.这样初始化就相当于把Svec的元素全部赋值给Svec2了,而Svec缺省的值为0,故Svec2的值也全部为0.
另外Svec2赋值还可以只用到Svec的一部分元素.
最近也是才开始看C++ Primer的书,比以前看的C++ 书经典多了.属于菜鸟级,回复帖子纯粹让自己复习学过的东西.

2007-06-07 19:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-145057-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.157348 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved