采取以下程序:
const std::vector<std::vector<int>> v{10, std::vector<int>(10)};
std::cout << v.size() << std::endl;
就其本身而言,仅进行了12个分配。如果添加循环:
for (auto e : v)
std::cout << e.size() << " ";
进行了22个分配。分配不是预先进行的吗?
因为您在每次迭代中都要复制向量。尝试
for (const auto& e : v) // take a reference each iteration
std::cout << e.size() << " ";
并看到差异。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句