後ろじゃなくて前からどうやっresize
て?std::deque
(はい、もちろん、push_front
何千回もダミー値を使用できますが、より良い/より効率的な方法はありますか?)
insert
N 個の要素を挿入する のオーバーロードがあります。
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
のすべての反復子はいずれの場合でも有効なままにする必要があります。