У меня есть петля
for (itr=addr->second.begin(); itr!=addr->second.end(); itr++)
если у меня есть 10 записей на карте, и если я хочу распечатать индекс Im in (например, 1,2,3,4,.10), есть ли способ распечатать его с помощью другой переменной. Благодарю.
Вы можете распечатать индекс позиции, в которой вы находитесь, но это ужасно неэффективно: элементы в std::map<...>
не имеют индекса. Вы можете определить индекс как расстояние от начала, хотя:
for (itr=addr->second.begin(); itr!=addr->second.end(); ++itr) {
std::cout << (std::distance(addr->second.begin(), itr) + 1) << ','; // not recommended!
}
То есть, да, это возможно, но это, конечно, не то, что я сделал бы! Я не помню, чтобы когда-либо приходилось иметь индекс для объекта в std::map<...>
. Если мне нужно было получить значения std::map<...>
в сочетании с индексом, я бы просто использовал другую переменную или пользовательский итератор, который отслеживает итератор карты и счетчик.
std::map
?std::distance(addr->second.begin(), itr)
возможно?