vector对象的初始化

本文详细介绍了C++标准库中Vector容器的各种初始化方式,包括不同数据类型的初始化实例,并解释了值初始化的概念。

vector 不是一种数据类型,而只是一个类模板,可用来定义任意多种数据类型。vector 类型的每一种都指定了其保存元素的
类型。因此,vector<int> 和 vector<string> 都是数据类型。
 

下表是vector的几种初始化方式:

如果没有指定元素的初始化式,那么标准库将自行提供一个元素初始值进行值初始化(value initializationd) 。这个由库生成的初始值将用来初始化容
器中的每个元素,具体值为何,取决于存储在 vector 中元素的数据类型。如下代码所示:

#include <vector>
#include <string>

using namespace std;
int main()
{
	int n = 10;
	//vector保存类型为int的对象
	vector<int> v1;		//v1包含值初始化为0的一个整型元素
	vector<int> v2(v1); //v2是v1的一个副本
	vector<int> v3(n,8);//v3包含n个值为8的整型元素
	vector<int> v4(n);	//v4包含n个值初始化为0的整型元素
	//vector保存类型为string的对象
	vector<string> s1;				   //s1包含1个空string元素 
	vector<string> s2(s1);			   //s2是s1的一个副本
	vector<string> s3(n,"WonderChaos");//s3包含n个值为"WonderChaos"的string元素
	vector<string> s4(n);			   //s4包含n个空string元素
	return 0;
}


### C++ 中 `vector` 常量的初始化方法 在 C++ 中,`const` 修饰的 `std::vector` 表示该向量的内容在其生命周期内不可更改。为了正确初始化一个 `const std::vector`,需要确保在定义时就完成其内容的赋值。以下是几种常见的初始化方法: #### 方法 1:使用大括号 `{}` 初始化 C++11 引入了统一初始化语法,允许直接使用大括号对 `vector` 进行初始化。这种方式简洁且直观,适用于 `const` 和非 `const` 的 `vector`[^4]。 ```cpp const std::vector<int> vec = {1, 2, 3, 4, 5}; ``` #### 方法 2:通过构造函数初始化 可以通过 `std::vector` 的构造函数来初始化常量向量。例如,指定元素个数和初始值: ```cpp const std::vector<int> vec(5, 10); // 创建包含 5 个值为 10 的元素的 vector ``` #### 方法 3:从另一个 `vector` 初始化 如果已经存在一个普通的 `vector`,可以将其用于初始化一个 `const vector`[^2]。 ```cpp std::vector<int> temp = {1, 2, 3, 4, 5}; const std::vector<int> vec(temp); // 使用 temp 初始化 const vector ``` #### 注意事项 - **不可修改**:一旦 `const std::vector` 被初始化,其内容无法被修改。 - **初始化顺序**:在初始化列表中,成员变量的初始化顺序应与其声明顺序一致[^4]。 - **避免未初始化**:全局或局部对象在使用前必须初始化,否则会导致未定义行为。 ### 示例代码 以下是一个完整的示例,展示如何初始化并使用 `const std::vector`: ```cpp #include <iostream> #include <vector> int main() { // 方法 1: 使用大括号初始化 const std::vector<int> vec1 = {1, 2, 3, 4, 5}; // 方法 2: 使用构造函数初始化 const std::vector<int> vec2(5, 10); // 方法 3: 从另一个 vector 初始化 std::vector<int> temp = {6, 7, 8, 9, 10}; const std::vector<int> vec3(temp); // 输出结果 for (int i : vec1) std::cout << i << " "; std::cout << std::endl; for (int i : vec2) std::cout << i << " "; std::cout << std::endl; for (int i : vec3) std::cout << i << " "; std::cout << std::endl; return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值