C ++:固定但运行时定义的长度数组的向量

时间:2014-06-18 08:39:33

标签: c++ arrays vector

我知道我可以使用

std::vector<std::array<int, 20> > myVec;

作为矩阵可在单一维度上生长的容器。但是,必须在编译时定义std:array<>大小。有没有简单的方法如何为运行时定义的数组做同样的事情?

我需要这个来处理几GB的数据,所以我担心矢量矢量会带来不必要的开销。

2 个答案:

答案 0 :(得分:7)

  

我需要这个来处理几GB的数据,所以我很害怕   向量向量会带来不必要的开销。

然后围绕一维vector编写一个包装类,它允许二维索引,并将一个固定维度作为构造函数参数。

这是最有效的方式,因为只有一个间接层。

答案 1 :(得分:3)

您应该考虑使用std::vector< std::vector<int> >来保存您的数据。过早优化不是一件好事。

如果速度太慢,您可以自己编写或使用第三方内存分配器vector。对于像您这样的特定目标(存储大量相同大小的对象),自定义内存分配器可能会明显更快。

Loopunroller在std::vector<int>周围使用包装器的想法也很不错。

相关问题