将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的末尾保留内存. 谢谢. 解决方法
我会使用如下调整大小的方法,因为只有deque重新分配一次:
size_t oldSize = deq.size(); deq.resize(deq.size() + vec.size()); copy(vec.begin(),vec.end(),deq.begin() + oldSize); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |