我知道我可以使用
std::vector<std::array<int, 20> > myVec;
作为矩阵可在单一维度上生长的容器。但是,必须在编译时定义std:array<>
大小。有没有简单的方法如何为运行时定义的数组做同样的事情?
我需要这个来处理几GB的数据,所以我担心矢量矢量会带来不必要的开销。
答案 0 :(得分:7)
我需要这个来处理几GB的数据,所以我很害怕 向量向量会带来不必要的开销。
然后围绕一维vector
编写一个包装类,它允许二维索引,并将一个固定维度作为构造函数参数。
这是最有效的方式,因为只有一个间接层。
答案 1 :(得分:3)
您应该考虑使用std::vector< std::vector<int> >
来保存您的数据。过早优化不是一件好事。
如果速度太慢,您可以自己编写或使用第三方内存分配器vector
。对于像您这样的特定目标(存储大量相同大小的对象),自定义内存分配器可能会明显更快。
Loopunroller在std::vector<int>
周围使用包装器的想法也很不错。