У меня есть набор элементов типа Team. Я хочу написать функцию, чтобы вернуть адрес данного элемента. Функция get_team принимает идентификатор и сравнивает его с помощью функции класса Team is_team, которая возвращает логическое значение «true», если этот объект Team имеет одинаковый идентификатор.Возврат адреса заданного объекта через итератор
1 string TeamA = "ABC";
2 Team A = get_team(TeamA);
3
4 const Team & get_team(string id) {
5 for (set<Team>::iterator iter = teams_.begin(); iter != teams.end(); ++iter){
6 Team team = *iter;
7 if (team.is_team(id)){
8 return *iter;
9 }
10 }
11 }
Когда это работает, адрес * ITER (строка 6, строка 8) правильно и совпадает с адресом объекта команды, сохраненной в наборе «teams_». Однако при возврате функции адрес отличается (строка 2).
Адрес элемента и * ИТЭР правильно отображает это: 0x0048e930 Адрес команды А: 0x0039f47c
Как я получить правильный адрес? (Как я могу сделать адрес Team A 0x0048e930?)
Похоже, что вы хотите использовать карту вместо набора. –