C++中如何创建固定大小的嵌套固定大小vector?
解决创建固定大小vector嵌套vector的问题
嘿,这个坑我之前踩过!你原来的写法vector <vector <int> (10)> v(10);没法运行的核心原因是:vector的模板参数需要传入一个类型,而vector<int>(10)是一个具体的对象(调用构造函数生成的临时vector),不是类型,编译器自然会报错。
下面给你几个可行的实现方式,按需选择:
方法一:嵌套使用vector构造函数(最常用)
直接在外层vector的构造函数里,指定每个元素的初始值为一个大小为10的vector<int>:
#include <vector> using namespace std; // 如果你的代码里用了这个的话 int main() { // 外层vector有10个元素,每个元素都是大小为10的vector<int> vector<vector<int>> v(10, vector<int>(10)); return 0; }
这里第一个参数10是外层vector的元素个数,第二个参数vector<int>(10)是每个元素的初始模板——外层的10个vector都会被初始化成这个预定义大小的vector。
方法二:用初始化列表(适合少量元素的情况)
如果你的外层vector元素数量不多,可以手动用初始化列表逐个指定,但对于10个元素来说有点繁琐,示例如下:
vector<vector<int>> v = { vector<int>(10), vector<int>(10), vector<int>(10), // 重复到10个... };
这种写法不如方法一高效,除非你需要给不同的内层vector设置不同的初始值。
方法三:用std::array(编译期固定大小)
如果你的嵌套容器大小是编译期就能确定的常量,并且不需要动态扩容,那么可以考虑用std::array代替vector,它是静态数组,性能更好:
#include <array> using namespace std; int main() { // 一个10x10的静态数组,大小在编译期确定 array<array<int, 10>, 10> v; return 0; }
注意array的大小必须是编译时常量,不能是运行时才确定的变量,这一点和vector不同,要根据你的需求选择。
总结一下:最常用的还是方法一,既满足动态容器的特性,又能快速创建嵌套的固定大小vector。
内容的提问来源于stack exchange,提问作者CerushDope
相关产品推荐
相关产品推荐

