c++ - Skip first iteration over unordered_map -
in for loop auto, iterator iterates on unordered_map. this:
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; } assume variables defined properly, since code works fine. question, how can exclude first iteration? example, map contains 3 rows , current loop iterates 0, 1, 2. want iterate on 1 , 2 only.
bool is_first_iteration = true; for(const auto & rule_pair : rule_index) { if (std::exchange(is_first_iteration, false)) continue; std::cout << rule_pair.first << ": "; printlist(rule_pair.second, 0); std::cout << std::endl; } the std::exchange call assigns false is_first_iteration , returns previous value. 1 of use cases discussed in the paper proposing std::exchange c++14. paper shows reference implementation can use if stuck c++11.
Comments
Post a Comment