c++ - 如何使用预定义计数在 C++ 中初始化 vector<int> 数组?

标签 c++ arrays vector stl initialization

打扰一下,我是 C++ 中的 STL 新手。如何初始化一个包含 10 个 vector 指针的数组,每个指针指向一个包含 5 个 int 元素的 vector 。

我的代码片段如下:

vector<int>* neighbors = new vector<int>(5)[10];  // Error

谢谢

最佳答案

这将创建一个包含 10 vector<int> 的 vector ,每一个都有 5 个元素:

std::vector<std::vector<int>> v(10, std::vector<int>(5));

请注意,如果外部容器的大小是固定的,您可能想要使用 std::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) 移动或交换操作。一个std::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

等等。

关于c++ - 如何使用预定义计数在 C++ 中初始化 vector<int> 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18159820/

相关文章:

android - 如何从 android 中的 ArrayList<Integer> 中删除特定数据

c++ - 填充整数列表比填充整数 vector 快 100 倍

c++ - 从命令行 Python/C++ 启动 Minecraft

c++ - 在另一台计算机上启动使用 MinGW 编译的 Windows 应用程序时出现库链接错误

arrays - 如何快速更改数组内 UIImage 的隐藏状态?

arrays - 将项目添加到对象中

c++ - 将 vector 中的元素放入队列然后清除 vector

字符数组 vector 上的 C++ GCC 4.3.2 错误

c++ - shared_ptr 中对 const int 的 undefined reference

使用 Python.h undefined symbol 的 C++ 编译