考慮以下情形:連接兩個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