连接两个std ::向量
如何连接两个std::vector
?
vector1.insert( vector1.end(), vector2.begin(), vector2.end() );
如果您正在使用C ++ 11,并且希望移动元素而不是仅仅复制元素,则可以使用std :: move_iterator(http://en.cppreference.com/w/cpp/iterator/move_iterator)以及insert (或复制):
#include <vector>
#include <iostream>
#include <iterator>
int main(int argc, char** argv) {
std::vector<int> dest{1,2,3,4,5};
std::vector<int> src{6,7,8,9,10};
// Move elements from src to dest.
// src is left in undefined but safe-to-destruct state.
dest.insert(
dest.end(),
std::make_move_iterator(src.begin()),
std::make_move_iterator(src.end())
);
// Print out concatenated vector.
std::copy(
dest.begin(),
dest.end(),
std::ostream_iterator<int>(std::cout, "n")
);
return 0;
}
对于带整数的例子来说,这不会更高效,因为移动它们并不比复制效率更高,但对于具有优化移动的数据结构,它可以避免复制不必要的状态:
#include <vector>
#include <iostream>
#include <iterator>
int main(int argc, char** argv) {
std::vector<std::vector<int>> dest{{1,2,3,4,5}, {3,4}};
std::vector<std::vector<int>> src{{6,7,8,9,10}};
// Move elements from src to dest.
// src is left in undefined but safe-to-destruct state.
dest.insert(
dest.end(),
std::make_move_iterator(src.begin()),
std::make_move_iterator(src.end())
);
return 0;
}
移动之后,src的元素处于一个未定义但可以安全销毁的状态,其前一个元素直接传递到dest的新元素。
我会使用插入功能,如下所示:
vector<int> a, b;
//fill with data
b.insert(b.end(), a.begin(), a.end());
链接地址: http://www.djcxy.com/p/53949.html