Согласно документации, итераторы хэшированного индекса остаются в силе, когда новые элементы вставляются в multi_index. Однако, когда я попытался использовать следующий подход
auto& myIndex = myMultiIndex.get<0>();
auto range = myIndex.equal_range(x);
for (auto iter = range.first; iter != range.second; ++iter) {
myMultiIndex.emplace(someArgsRelatedToIter);
}
кажется, что range.first/range.second становится недействительным: хотя std::distance(range.first, range.second) == 1, цикл for фактически выполняется дважды. Я как-то не правильно его использую? Спасибо!
myMultiIndex
. Непонятно, зачем добавлять аргументы в такой цикл. Возможно, вместо этого вы можете измеритьdistance
и выполнить цикл для этого, чтобы получитьauto size = std::distance(range.first, range.second);
, затемfor (size_t index = 0; index < size; ++index)
и таким образом добавить свои аргументы? Это всего лишь предположения, поэтому я не ответил как таковой. - person Tas   schedule 22.08.2018