通过迭代器返回set对象的Address

时间:2015-10-14 00:49:45

标签: c++ pointers iterator set

我有一组Team类型的元素。我想编写一个函数来返回给定元素的地址。 get_team函数接受一个id并通过Team类函数' is_team'进行比较。返回布尔值' true'如果该Team对象具有相同的id。

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行)是正确的,并且与集合&#39;团队_&#39;中存储的Team对象的地址相匹配。 但是,当函数返回时,地址不同(第2行)。

元素的地址和* iter正确显示的地址是:0x0048e930 A队的地址是:0x0039f47c

我如何获得正确的地址? (如何制作A组0x0048e930的地址?)

1 个答案:

答案 0 :(得分:0)

如果您想要具体说明地址,您可能希望一直使用指针。否则你所犯的错误是Team A = vs Team& A =,因为返回的引用被复制,这就是地址改变的原因。它将是一个堆栈地址。