我想知道嵌套向量总是有2个元素的std::vector<std::vector<double>>
是否更快,或者更快地得到std::vector<MyPoint>
,其中MyPoint的定义如下:
struct MyPoint {
double Point[2];
};
由于
答案 0 :(得分:11)
vector<MyPoint>
更可取,因为MyPoint
可能是:
vector<double>
(您可以使用sizeof
进行检查)和/或例如,在我的32位gcc上,std::vector<double>
的大小为12,而MyPoint
的大小为16,但该向量会进行额外的分配。在64位实现上,MyPoint
几乎肯定会有相同的大小,但std::vector
可能会更大。
此外,向量表示使用连续内存的可变大小的有序容器。因此,对于size-2数组来说,它可能有点过分,因为使用向量会引入大小可能发生变化的可能性。
答案 1 :(得分:5)
我假设在第二个例子中你的意思是:std::vector<MyPoint>
?是的,这种变体会更有效率。例如,您可以更轻松地保留大量内存,并且您必须减少总体分配。
您也可以使用std::pair<double, double>
代替MyPoint。
答案 2 :(得分:1)
不仅两个元素的向量较慢,拥有动态结构以保持总是2个元素(假设它不会改变)也很奇怪。为方便起见,我会使用struct MyPoint { double x, y; };
。
答案 3 :(得分:0)
你的意思是第二个例子中的std::vector<MyPoint>
吗?这比在矢量中使用矢量要好得多。