4

你怎么resizestd::deque前面而不是后面

(是的,当然我可以push_front使用数千次虚拟值,但是有没有更好/更有效的方法?)

4

2 回答 2

9

插入 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()

于 2012-04-17T17:14:32.913 回答
1

更完整的解决方案:

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,所有剩余的迭代器在任何一种情况下都应该保持有效。

于 2012-04-17T17:52:27.810 回答