对不起,我是 C++ 中 STL 的新手。如何初始化一个包含 10 个向量指针的数组,每个指针指向一个包含 5 个 int 元素的向量。
我的代码片段如下:
vector<int>* neighbors = new vector<int>(5)[10]; // Error
谢谢
对不起,我是 C++ 中 STL 的新手。如何初始化一个包含 10 个向量指针的数组,每个指针指向一个包含 5 个 int 元素的向量。
我的代码片段如下:
vector<int>* neighbors = new vector<int>(5)[10]; // Error
谢谢
这将创建一个包含 10 的向量vector<int>
,每个向量都有 5 个元素:
std::vector<std::vector<int>> v(10, std::vector<int>(5));
请注意,如果外部容器的大小是固定的,您可能需要使用 anstd::array
来代替。请注意,初始化更详细:
std::array<std::vector<int>, 10> v{{std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5)
}};
另请注意,数组的内容是数组的一部分。它的大小(由 给出sizeof
)大于vector
版本,并且没有可用的 O(1) 移动或交换操作。Anstd::array
类似于固定大小的自动存储普通数组。
另请注意,正如@chris 在评论中所建议的那样,您可以选择在默认初始化之后std::fill
设置数组的元素,例如,如果它们都具有相同的值:
std::array<std::vector<int>, 10> v; // default construction
std::fill(v.begin(), v.end(), std::vector<int>(5));
否则,您可以设置/修改各个元素:
v[0] = std::vector<int>(5); // replace default constructed vector with size 5 one
v[1].resize(42); // resize default constructed vector to 42
等等。