Перебор неупорядоченного множества, меняющего размер во время цикла C ++ - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь перебрать unordered_set циклом for. Проблема возникает потому, что в этом цикле может произойти добавление элемента или нескольких элементов в контейнер, который я повторяю.

Мне нужно выполнить итерацию до последнего элемента (включая элементы, добавленные в течение цикла)

Использование unorderd_set Я выполняю итерации следующим образом:

std::unordered_set<T> mySet;
for (auto itr = mySet.begin(); itr != mySet.end(); ++itr) {
    mySet.insert(someInt);
    /* ...*/
}

Таким образом, итерация останавливается до размера, который был у unordered_set в начале итерации. Так что он не видит, что размер изменился.

Эта итерация Dipendent - то, что мне нужно. Я собираюсь работать с unordered_set, чтобы иметь лучшую производительность, добавляя элемент и ища его внутри myContainer. Без этого цикла dipendendt я не могу заменить вектор на unordered_set.

Thank's

...