2D矢量与1D矢量

时间:2016-12-30 17:22:42

标签: c++ c++11 vector stl

在C ++ 11中,2D矢量如何在时间方面对抗1D向量? 在给定的2D矢量中,所有内部矢量具有相同的大小。

例如:

std::vector<std::vector<int>> X{10, std::vector<int>(4)};

vs

std::vector<int> Y(40);

当随机访问元素时,矢量的哪个化身会表现得更好?

1 个答案:

答案 0 :(得分:5)

单个std::vector本质上更简单,它只是存储在某处的连续内存块。

std::vector的{​​{1}}有更多的开销,但它也更强大(例如,因为每个内部向量可以具有不同的大小)。

随机访问性能应根据您的特定使用模式进行彻底基准测试,但主要区别在于:

  • 使用单个向量,您只需计算std::vector并访问元素
  • 使用嵌套向量,你有两个间接层,首先你必须获得包含内部向量的内存,然后你必须获得内向量数据的内存。