【问题标题】:How do I update a member in a set of std::pair? [duplicate]如何更新一组 std::pair 中的成员? [复制]
【发布时间】:2017-03-01 17:16:37
【问题描述】:

我试过这样做:

std::set< pair<int, int> > mySet;

// fill the set with something

mySet.find( make_pair(someValueX, someValueY) )->first = newX;

但我在编译时收到以下错误:

error: assignment of member 'std::pair<int, int>::first' in read-only object|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===||

【问题讨论】:

  • 你不能,你需要删除这对并插入新的。
  • 这与std::pair无关,是std::set的限制。

标签: c++ stl iterator set stdset


【解决方案1】:

std::set 的成员是 const,因为更改它们可能会使它们的排序无效。您必须删除该对并在更改后重新插入。

【讨论】:

  • 哦,现在我明白了……这困扰了我一段时间,不知道为什么它不起作用。谢谢!
猜你喜欢
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
  • 2013-04-14
  • 2011-10-04
相关资源
最近更新 更多