Я определил 2d карту следующим образом:Итерация по двухмерному станду :: unordered_map
unordered_map< string, unordered_map<string, Road*>* > matrix;
Где дорога просто:
class Road {
public:
Road() : connected(0), weight(0) {}
bool connected;
int weight;
};
Я попытался перебором карты этого пути , но он не смог скомпилировать.
for (auto &i : matrix) {
for (unordered_map< string, unordered_map<string, Road*>* >::iterator iter1 = i.second->begin();
iter1 != i.second->end(); iter1++) {
}
}
Так как я знаю, что моя матрица всегда NxN, одна вещь, которую я могу сделать, это
for (auto &i : matrix) {
for (auto &j : matrix) {
}
}
Но мне было интересно, если есть более чистый подход с различными размерами.
Ваш второй пример не делает то, что вы думаете. – tkausl
«но это не удалось скомпилировать». Спасибо за это подробное и полезное заявление о проблеме ... –
'auto' type не является итератором. –