Как напечатать указатель карты?

0

У меня есть петля

for (itr=addr->second.begin(); itr!=addr->second.end(); itr++)

если у меня есть 10 записей на карте, и если я хочу распечатать индекс Im in (например, 1,2,3,4,.10), есть ли способ распечатать его с помощью другой переменной. Благодарю.

  • 1
    Какая карта? std::map ?
  • 1
    std::distance(addr->second.begin(), itr) возможно?
Показать ещё 13 комментариев
Теги:

1 ответ

1
Лучший ответ

Вы можете распечатать индекс позиции, в которой вы находитесь, но это ужасно неэффективно: элементы в 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<...> в сочетании с индексом, я бы просто использовал другую переменную или пользовательский итератор, который отслеживает итератор карты и счетчик.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню