【问题标题】:Return the Address of a set object via iterator通过迭代器返回集合对象的地址
【发布时间】:2015-10-14 00:49:44
【问题描述】:

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

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_' 中的 Team 对象的地址匹配。 但是,当函数返回时地址不同(第 2 行)。

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

我如何获得正确的地址? (如何将A组的地址设为0x0048e930?)

【问题讨论】:

  • 听起来你想使用地图而不是集合..

标签: c++ pointers iterator set


【解决方案1】:

如果你想明确地址,你会想一直使用指针。否则你犯的错误是Team A = vs Team&amp; A =,由于返回的引用被复制,这就是地址改变的原因。这将是它上面的堆栈地址。

【讨论】:

    猜你喜欢
    • 2012-06-16
    • 2021-05-09
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    相关资源
    最近更新 更多