std::vector<int> a;
std::vector<int> b;
std::vector<int> c;
我想将这三个向量连接起来,通过将b
和c
的元素附加到a
。哪种方法最好,为什么?
1) 通过使用 vector::insert
:
a.reserve(a.size() + b.size() + c.size());
a.insert(a.end(), b.begin(), b.end());
a.insert(a.end(), c.begin(), c.end());
b.clear();
c.clear();
2) 通过使用 std::copy
:
a.reserve(a.size() + b.size() + c.size());
std::copy(b.begin(), b.end(), std::inserter(a, a.end()));
std::copy(c.begin(), c.end(), std::inserter(a, a.end()));
b.clear();
c.clear();
3) 通过使用C++11
中的std::move
:
a.reserve(a.size() + b.size() + c.size());
std::move(b.begin(), b.end(), std::inserter(a, a.end()));
std::move(c.begin(), c.end(), std::inserter(a, a.end()));
b.clear();
c.clear();
reserve()
的调用... - Michael Goldshteynreverse()
的语句以确保全面。 - vdenotarisstd::back_inserter(a)
可能会比std::inserter(a, a.end())
更方便和清晰。 - Christian Rau