如何在C++中初始化大小为3维的向量?

16
例如,如果我们初始化vector<vector<vector<double>>> f,则未指定每个方向上的维度。因此,我想知道,应该插入什么命令来使f具有[3][4][5]的大小。我们使用new还是其他什么?
感谢您的帮助!
3个回答

36
vector<vector<vector<double>>> f(3, vector<vector<double>>(4, vector<double>(5)));

2
不要忘记在闭合括号之间加上空格。 - Beta
@Beta,至少是Pre-C++11。 - chris
1
@Beta 代码已经按照现代编译器的要求编写得非常好了,可以在此链接(http://ideone.com/B4dYFG)中查看。 - Igor Tandetnik
1
这不是很丑吗?当通过构造函数参数步进时,难道不能推断出类型将是“vector”的一个实例吗?想象一下使用16维矩阵做这件事情... - CraigDavid
是啊,真希望有一种更简单的方法来实例化N维数据结构以用于向量,感觉这是一个足够常见的用例,而使用数组的等效方法则非常简单。 - Ehtesh Choudhury

0
如果您已经声明了向量并且想要初始化它,以下是一种方法:
vector<vector<vector<double>>> f;
f = vector<vector<vector<double>>>(3, vector<vector<double>>(4, vector<double>(5)));

-2
std::vector<std::vector<std::vector<double>>> f(3, std::vector<std::vector<double>>(4, std::vector<double>(5,0.0)));

对于任何想要在不使用命名空间std的情况下使用它的人。此外,f [3] [4] [5]中的值被初始化为0.0,这可能很有用。


它们已经被初始化为零。这与6年前Igor发布的答案相同,只是不必要地更冗长。 - Lightness Races in Orbit
虽然不使用 using namespace std 更符合良好的编码风格。 - Apollys supports Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接