std::vector<> 如何初始化
时间: 2023-10-17 12:23:00 浏览: 87
在 C++ 中,可以使用以下几种方法初始化 std::vector:
1.使用花括号初始化器:
```
std::vector<int> vec{1, 2, 3, 4};
```
2.使用初始化列表:
```
std::vector<int> vec = {1, 2, 3, 4};
```
3.使用 std::vector 的构造函数:
```
std::vector<int> vec(4, 0); // 初始化一个包含 4 个元素且每个元素都为 0 的向量
```
4.使用复制构造函数:
```
std::vector<int> vec1{1, 2, 3, 4};
std::vector<int> vec2(vec1); // 使用 vec1 的值初始化 vec2
```
5.使用移动构造函数:
```
std::vector<int> vec1{1, 2, 3, 4};
std::vector<int> vec2(std::move(vec1)); // 使用 vec1 的值初始化 vec2,并将 vec1 清空
```
注意:在使用 std::vector 的构造函数时,第一个参数表示向量的大小,第二个参数表示向量中每个元素的初值。
相关问题
std::vector<std::vector<std::vector<std::vector<double>>>> FiveDimArray如何初始化
`std::vector<std::vector<std::vector<std::vector<double>>>> FiveDimArray` 是一个高阶的动态数组,可以用于存储多维的数值数据。由于它的复杂层次结构,初始化时需要递归地创建每个维度的向量。下面是一个示例,展示了如何初始化一个四维的二维矩阵的二维矩阵(即五个维度,其中前四个维度都是2x2矩阵):
```cpp
#include <iostream>
using namespace std;
FiveDimArray initializeFiveDimArray(int outerDims[4], int innerSize) {
FiveDimArray five_dim_array;
for (int i = 0; i < outerDims[0]; ++i) {
vector<vector<vector<double>>> layer1;
for (int j = 0; j < outerDims[1]; ++j) {
vector<vector<double>> layer2;
for (int k = 0; k < outerDims[2]; ++k) {
vector<vector<double>> layer3;
for (int l = 0; l < outerDims[3]; ++l) {
layer3.push_back(vector<double>(innerSize, 0.0)); // 初始化为全零向量
}
layer2.push_back(layer3);
}
layer1.push_back(layer2);
}
five_dim_array.push_back(layer1); // 将当前层添加到五维数组中
}
return five_dim_array;
}
int main() {
const int dimensions[4] = {2, 2, 2, 2}; // 四个维度都设置为2x2
int innerSize = 5; // 内部元素数量
FiveDimArray five_dim_array = initializeFiveDimArray(dimensions, innerSize);
// 输出部分数据以验证初始化
for (const auto &layer : five_dim_array) {
for (const auto &row : layer) {
for (const auto &element : row) {
cout << element << ' ';
}
cout << endl;
}
cout << endl;
}
return 0;
}
```
在这个例子中,`initializeFiveDimArray` 函数接受外层维度的数组和内部元素的大小作为参数,然后逐层填充`FiveDimArray`。
std::vector<std::vector<double>>如何初始化
`std::vector<std::vector<double>>` 是 C++ 中的一个二维动态数组,它是一个包含 `double` 类型元素的一维向量集合。你可以通过多种方式进行初始化:
1. **空初始化**:
```cpp
std::vector<std::vector<double>> matrix;
```
这将创建一个空的二维向量。
2. **指定大小的初始填充**:
```cpp
std::vector<std::vector<double>> matrix(3, std::vector<double>(4, 0.0)); // 创建一个3x4矩阵,所有元素为0.0
```
这里分别给每一行分配了4个`double`值。
3. **直接赋值**:
```cpp
std::vector<std::vector<double>> matrix = {
{1.0, 2.0, 3.0},
{4.0, 5.0, 6.0},
{7.0, 8.0, 9.0} // 初始化为3行3列矩阵,元素分别为1到9
};
```
可以直接提供一组嵌套的`{}`列表来初始化每个子向量。
4. **用循环或函数初始化**:
```cpp
size_t rows = 3, cols = 4;
std::vector<std::vector<double>> matrix(rows);
for (size_t i = 0; i < rows; ++i) {
matrix[i] = std::vector<double>(cols, some_value); // 使用某个默认值填充
}
```
使用循环逐行填充。
阅读全文