加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

将std :: vector移动到C 11中的std :: deque

发布时间:2020-12-15 02:13:29 所属栏目:Java 来源:网络整理
导读:如果我有std :: deque和std :: vector并希望将它们组合到std :: deque,我可以通过以下方式实现: typedef int T; // type int will serve just for illustrationstd::deque T deq(100); // just some random size herestd::vector T vec(50);// ... doing so
如果我有std :: deque和std :: vector并希望将它们组合到std :: deque,我可以通过以下方式实现:

typedef int T; // type int will serve just for illustration
std::deque< T > deq(100); // just some random size here
std::vector< T > vec(50);
// ... doing some filling ...
// now moving vector to the end of queue:
deq.insert( 
    deq.end(),std::make_move_iterator( vec.begin() ),std::make_move_iterator( vec.end() )
);
std::cout << deq.size() << std::endl;

我们知道向量的大小但是在使用std :: deque.insert(…)之前我们不能在std :: deque的末尾保留内存.
那么它是将std :: vector的所有元素移动到std :: deque末尾的最快方法吗?还是我错过了什么?

谢谢.

解决方法

我会使用如下调整大小的方法,因为只有deque重新分配一次:

size_t oldSize = deq.size();
deq.resize(deq.size() + vec.size());
copy(vec.begin(),vec.end(),deq.begin() + oldSize);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读