В цикле for
с auto
итератор перебирает unordered_map
. Как это:
using RuleIndex = std::unordered_map<uint, Symbol*>;
RuleIndex rule_index;
for(const auto & rule_pair : rule_index ) {
std::cout << rule_pair.first << ": ";
printList(rule_pair.second, 0);
std::cout << std::endl;
}
Предположим, что все переменные определены правильно, так как код работает нормально. Мой вопрос, как я могу исключить первую итерацию? Например, карта содержит 3 строки, и текущий цикл повторяется для 0, 1, 2. Я хочу перебирать только 1 и 2.
auto it = rule_index.begin(); /* or cbegin() */ it++; while (it != rule_index.end()) { /* ... */ it++; }
или что-то подобное. - person Biffen   schedule 12.05.2015it++
можно заменить наif (it != rule_index.end()) it++;
- person Biffen   schedule 12.05.2015unordered_map
может измениться порядок хранимых пар. - person awesoon   schedule 12.05.2015unordered_set
в настоящее время имеют одни и те же элементы, которые были добавлены в одном и том же порядке, разные более ранние события, включая, помимо прочего,reserve
и ручные или автоматические вызовыresize
, могут привести к совершенно другому порядку итераций. - person Tony Delroy   schedule 14.05.2015unordered_map
, не должно зависеть от порядка - это буквально в названии структуры данных. - person Alex Ryan   schedule 07.12.2015