And*_* A. 7 c++ stdvector c++-standard-library c++11 stddeque
如果我有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;
Run Code Online (Sandbox Code Playgroud)
我们知道向量的大小,但我们不能在最后std::deque使用之前保留内存std::deque.insert(...)。那么这是将所有元素移动std::vector到末尾的最快方法std::deque吗?还是我错过了什么?
谢谢你。
我会使用resize如下方法,因为deque只重新分配一次:
size_t oldSize = deq.size();
deq.resize(deq.size() + vec.size());
copy(vec.begin(), vec.end(), deq.begin() + oldSize);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3892 次 |
| 最近记录: |