初始化一个向量的向量 C++
嗨我想初始化一个大小为9的向量,其元素是向量的大小,例如5.我想将所有元素初始化为零向量。初始化一个向量的向量<doubles> C++
这是正确的吗?
vector<double> z(5,0);
vector< vector<double> > diff(9, z);
或者有没有更简单的方法来做到这一点?
你可能做到这一点在单行:
vector<vector<double> > diff(9, vector<double>(5));
您可能还需要考虑使用boost::multi_array更高效的存储和访问(避免了双指针间接)。
或者,45个元素的矢量跨度访问也可能足以... –
'矢量
很肯定这将工作:
vector< vector<double> > diff(9, vector<double>(5,0));
vector< vector<double> > diff(9, std::vector<double>(5, 0));
但是在具体情况下大小在编译时已知C数组:
double diff[9][5] = { { 0 } };
如果大小是固定的,你可以用std::array
而不是去:
std::array<std::array<double,5>,9> diff = {};
它也取决于范围的大小。 'std :: array'将所有内容保留在本地范围内,所以如果该数组太大,可能会触发一些名称让我感到失望的错误。 –
堆栈溢出? –
这是创建2D矢量的正确方法。你只是稍微冗长一点而已。 – 2011-09-22 17:54:58
这个9x5尺寸是固定的吗? –
是的,我知道之前的大小。只是选择了9和5作为这个问题的一些随机整数。 – smilingbuddha