我正在使用多路访问,并希望合并结果。例如:
std::vector A;
std::vector B;
std::vector AB;
我想让AB按照A的内容和B的内容的顺序。做这样的事情最有效的方法是什么?
发布于 2010-07-05 12:39:39
AB.reserve( A.size() + B.size() ); // preallocate memory
AB.insert( AB.end(), A.begin(), A.end() );
AB.insert( AB.end(), B.begin(), B.end() );
发布于 2010-07-05 12:40:04
这正是成员函数
是为了
std::vector AB = A;
AB.insert(AB.end(), B.begin(), B.end());
发布于 2010-07-05 16:55:17
这取决于您是否真的需要在物理上连接这两个向量,或者您是否希望为了迭代而提供连接的外观。boost::join函数
http://www.boost.org/doc/libs/1
_
43
_
0/libs/range/doc/html/range/reference/utilities/join.html
会给你这个。
std::vector v0;
v0.push_back(1);
v0.push_back(2);
v0.push_back(3);
std::vector v1;
v1.push_back(4);
v1.push_back(5);
v1.push_back(6);
...
BOOST_FOREACH(const int & i, boost::join(v0, v1)){
cout << i << endl;
}
应该会给你
1
2
3
4
5
6
注boost::join不会将这两个向量复制到新的容器中,但会生成一对迭代器(范围),覆盖两个容器的跨度。会有一些性能开销,但可能会减少首先将所有数据复制到新容器的开销。
https://stackoverflow.com/questions/3177241
复制相似问题