Как эффективно вставить серию значений в std :: deque?

У меня есть код C ++ 03 для вставки серии значений в std::deque:

void example(std::deque<int> &_recentSent,
const int beginOffset,
const int lastOffset) {
for (int offset = beginOffset; offset <= lastOffset; ++offset) {
_recentSent.push_back(offset);
}
}

Если бы это было std::vector, Я хотел бы использовать reserve() чтобы контейнер был достаточно большим, чтобы все записи были вставлены перед входом в цикл:

std::vector<int> _recentSent;

_recentSent.reserve(_recentSent.size() + (lastOffset + 1 - beginOffset));

Но поскольку нет ни одного, что я мог бы сделать, чтобы эффективно вставить ряд элементов в std::deque чтобы его размер был изменен только один раз, если это необходимо?

1

Решение

В отличие от вектора, хранилище для deque никогда не перераспределяется при добавлении новых элементов. Это означает, что существующие элементы никогда не нужно перемещать. Таким образом, резервирование заблаговременно не имеет смысла.

4

Другие решения

Так как нет std::deque::reserve()что насчет предварительного распределения всего хранилища _recentSent.resize (_recentSent.size () + lastOffset + 1 - beginOffset) а затем вставка с использованием итератора std::deque<int>::iterator it = _recentSent.end () - (lastOffset + 1 - beginOffset);,

0