使用数组初始化vector对象

本文探讨了C++中数组与vector之间的初始化规则,包括如何使用数组初始化vector,以及为何不推荐使用内置数组的原因。文章强调了现代C++编程实践中使用vector和迭代器的重要性。

数组不能为另一个内置类型的数组赋初值,也不允许使用vector对象初始化数组。但是允许使用数组来初始化vector对象,只需指明要拷贝区域的首元素地址和尾后地址就可以了:

int test[] = {0, 1,  2, 3, 4, 5};
vector<int> ivec(begin(test), end(test));  //ivec中存放着test数组中所有对应元素的副本。

用于初始化vector对象的值也可能是数组的一部分元素:

vector<int> subVec(test + 1, test + 4);   //subVec中存放着3个元素,test[1],test[2],test[3]

建议:尽量使用标准库类型而非数组
使用指针和数组很容易出错。一部分原因是概念上的问题:指针常用于底层操作,因此容易引发一些与繁琐细节有关的错误。其他问题则源于语法错误,特别是声明指针时的语法错误。
现代的C++程序应当尽量使用vector和迭代器,避免使用内置数组和指针;应该尽量使用string,避免使用C风格的基于数组的字符串。

### C++ 中 `vector` 的初始化方法 在 C++ 编程语言中,`std::vector` 是一种动态数组容器,能够根据需求自动调整其大小。以下是几种常见的 `vector` 初始化方式: #### 1. 默认构造函数 通过默认构造函数创建一个空的 `vector` 容器,此时该容器不包含任何元素[^1]。 ```cpp std::vector<int> v; ``` #### 2. 指定大小和初始值 可以通过指定大小以及可选的初始值来初始化 `vector`。如果未提供初始值,则会使用类型的默认值(对于内置类型如 `int`,默认值为零)。这种方式适用于需要预先分配固定数量空间的情况[^2]。 ```cpp const int size = 5; std::vector<int> v(size); // 创建含有五个整数的向量,默认值为0 std::vector<double> d(3, 4.5); // 创建三个双精度浮点数值均为4.5的向量 ``` #### 3. 复制另一个现有 vector 可以利用已存在的 `vector` 对象作为模板来构建新的对象实例。新生成的对象将会拥有与源相同的元素集合。 ```cpp std::vector<int> original {1, 2, 3}; std::vector<int> copy(original); ``` #### 4. 设置二维或多维数组长度并赋初值 当处理多维度的数据结构时,比如矩阵或者表格形式的数据存储,我们可以先定义外层的一维 `vector` ,再嵌套内部同样基于 `vector` 实现的具体单元格表示法[^3]。 ```cpp int N1 = 3, N2 = 4, value = 7; std::vector<std::vector<int>> matrix(N1, std::vector<int>(N2, value)); // 上述语句建立了一个3×4型态且所有成员皆设成7的二维表列。 ``` #### 5. 使用迭代区间 [first,last) 进行填充 此功能允许我们从其他 STL 集合类别的某个范围复制资料到当前新建出来的 `vector` 当中去[^4]。 ```cpp #include <deque> std::deque<int> deq{10, 20, 30}; std::vector<int> vec(deq.begin(), deq.end()); // 此处vec包含了来自deq中的全部项目即:{10,20,30} ``` 以上就是关于如何在C++程序设计里运用标准库组件——`std::vector` 来完成不同类型数组初始化的一些基本技巧介绍。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值