首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >连接两个向量的最佳方法是什么?

连接两个向量的最佳方法是什么?
EN

Stack Overflow用户
提问于 2010-07-05 12:36:54
回答 8查看 261.7K关注 0票数 216

我正在使用多路访问,并希望合并结果。例如:

代码语言:javascript
复制
std::vector A;
std::vector B;
std::vector AB;

我想让AB按照A的内容和B的内容的顺序。做这样的事情最有效的方法是什么?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-07-05 12:39:39

代码语言:javascript
复制
AB.reserve( A.size() + B.size() ); // preallocate memory
AB.insert( AB.end(), A.begin(), A.end() );
AB.insert( AB.end(), B.begin(), B.end() );
票数 365
EN

Stack Overflow用户

发布于 2010-07-05 12:40:04

这正是成员函数

是为了

代码语言:javascript
复制
std::vector AB = A;
AB.insert(AB.end(), B.begin(), B.end());
票数 81
EN

Stack Overflow用户

发布于 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

会给你这个。

代码语言:javascript
复制
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;
}

应该会给你

代码语言:javascript
复制
1
2
3
4
5
6

注boost::join不会将这两个向量复制到新的容器中,但会生成一对迭代器(范围),覆盖两个容器的跨度。会有一些性能开销,但可能会减少首先将所有数据复制到新容器的开销。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3177241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档