4

後ろじゃなくてからどうやっresizeて?std::deque

(はい、もちろん、push_front何千回もダミー値を使用できますが、より良い/より効率的な方法はありますか?)

4

2 に答える 2

9

insertN 個の要素を挿入する のオーバーロードがあります。

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 に答える