你怎么resize
从std::deque
前面而不是后面?
(是的,当然我可以push_front
使用数千次虚拟值,但是有没有更好/更有效的方法?)
插入 N 个元素的重载insert
:
std::deque<int> c;
std::size_t new_size = get_new_desired_size();
c.insert(c.begin(), new_size - c.size(), int());
(此示例要求new_size >= c.size()
)
更完整的解决方案:
std::deque<T> deque;
std::size_t new_size = /* ... */;
if (new_size >= deque.size())
deque.insert(deque.begin(), new_size - deque.size(), T());
else
deque.erase(deque.begin(), deque.begin() + deque.size() - new_size);
由于 的性质std::deque
,所有剩余的迭代器在任何一种情况下都应该保持有效。