C++ vector 如何初始化
时间: 2024-09-10 19:28:57 浏览: 48
在C++中,`vector` 是标准模板库(STL)中的一个动态数组容器,它可以在运行时动态地调整大小。`vector` 的初始化可以通过多种方式进行,下面列举了其中一些常见的方法:
1. 默认初始化(空vector):
```cpp
std::vector<int> vec;
```
这行代码创建了一个名为 `vec` 的空 `vector`,它不包含任何元素。
2. 直接初始化(指定大小和初始值):
```cpp
std::vector<int> vec(n, val);
```
这里 `n` 是 `vector` 的大小,`val` 是用于初始化每个元素的值。这会创建一个包含 `n` 个元素的 `vector`,每个元素都被初始化为 `val`。
3. 使用范围初始化(从另一个容器或数组复制元素):
```cpp
std::vector<int> vec2(vec1.begin(), vec1.end());
std::vector<int> vec3({1, 2, 3, 4, 5}); // 初始化列表
```
`vec2` 将从 `vec1` 的迭代器范围(包含 `begin()`,不包含 `end()`)复制元素。`vec3` 使用初始化列表创建 `vector`,包含列表中的元素。
4. 使用列表初始化(C++11起支持):
```cpp
std::vector<int> vec4{1, 2, 3, 4, 5};
```
这种方式也是使用初始化列表,适用于支持列表初始化的编译器版本。
5. 使用 `assign` 方法:
```cpp
std::vector<int> vec;
vec.assign(n, val);
```
先创建一个空的 `vector`,然后使用 `assign` 方法来设置其大小和初始值。
6. 使用 `resize` 方法(如果已存在元素):
```cpp
std::vector<int> vec(10, 0); // 初始有10个元素,每个值为0
vec.resize(5); // 现在只保留前5个元素,其余的被移除
vec.resize(15, 1); // 扩展到15个元素,新增的元素被初始化为1
```
`resize` 方法可以改变 `vector` 的大小,如果 `vector` 变大了,新添加的元素会使用提供的值初始化;如果 `vector` 变小了,超出部分的元素会被移除。
阅读全文