标题:C++ 中vector初始化的问题
只看楼主
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
结帖率:87.93%
已结贴  问题点数:20 回复次数:5 
C++ 中vector初始化的问题
在看C++primer 第四版
其中有种初始化的方法是
    const size_t arr_size=6;
    int int_arr[arr_size]={0,1,2,3,4,5};
    vector<int> ivec(int_arr,int_arr+arr_size);
测试了下 居然也能正常初始化 但是查了下相关资料 好象没看到这种初始化的方式
我自己的理解是 用两个指针之间的数据来初始化 vector对象
不知道谁能给个解释 或者相关的联结也行
搜索更多相关主题的帖子: vector 
2009-12-23 15:37
bccnbin2009
Rank: 7Rank: 7Rank: 7
来 自:浙江
等 级:黑侠
帖 子:86
专家分:602
注 册:2009-10-5
得分:0 
是可以的,用静态数组来初始化。
一般vector的静态初始化是vector <T> name(10,1),这样给出了大小和元素的值。
而vector<int> ivec(int_arr,int_arr+arr_size),用静态数组来初始化,
_arr到_arr + arr_size给出了所有元素的地址和大小,原理是一样的。

滨封千里
2009-12-23 16:31
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
得分:0 
谢谢 这个能实现这个功能是知道的
但是看vector的构造函数好象没有这种形式
2009-12-23 16:58
bccnbin2009
Rank: 7Rank: 7Rank: 7
来 自:浙江
等 级:黑侠
帖 子:86
专家分:602
注 册:2009-10-5
得分:20 
恩,构造函数,确实好像没有。
但我上网搜了一下vector初始化原理,它是这样说的:

初始化过程
1.创建一个底层类型的临时对象,并在其上应用缺省构造函数;
2.在vector的每个元素上依次应用拷贝构造函数,用临时类对象的拷贝初始化每一个类对象;
3.删除临时类对象;

你看看能不能理解

滨封千里
2009-12-23 20:00
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
得分:0 
恩 还是看不懂 不过谢谢了 我会多看几次 慢慢揣测
2009-12-24 10:11
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
得分:0 
vector支持指定范围的初始化
指针就是迭代器,因此允许通过使用内置数组中的一对指针初始化容器也是可以的
2010-01-07 10:35



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




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

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