考虑以下情形:连接两个std :: vector - 哪种方法更高效,以及如何/为什么?
std::vector<int> A;
std::vector<int> B;
std::vector<int> AB;
我想AB
拥有的A
内容,然后B
以相同的顺序内容。
方法1:
AB.reserve(A.size() + B.size()); // preallocate memory
AB.insert(AB.end(), A.begin(), A.end());
AB.insert(AB.end(), B.begin(), B.end());
方法2:
std::vector<int> AB (A.begin(), A.end()); // calling constructor
AB.insert (AB.end(), B.begin(), B.end());
哪个的上述方法之一是更有效率?为什么? 有没有更高效的不同方法?
您是否尝试过测量它? – 2014-10-09 09:22:17
这很大程度上取决于这两个向量的大小以及向量分配器算法的实现 – EdChum 2014-10-09 09:22:22
不确定您是否检查过,但请记住,性能是您一旦确定它是_problem的唯一问题。除非你的矢量是巨大的,或者它们中的项目构造/复制成本高昂,你不会注意到很大的区别。不要花大量的时间将0.2ms的操作减少到0.1ms,除非你需要每秒处理数千次:-) – paxdiablo 2014-10-09 09:25:21