gpt4 book ai didi

c++ - 修改最后插入到 std::map

转载 作者:行者123 更新时间:2023-11-30 02:49:22 24 4
gpt4 key购买 nike

在下面的示例中,我尝试将一个元素插入到 std::map 并获取指向最后插入的元素的迭代器,但我无法修改它。

#include <map>

struct X {
int x;
};

struct Y {
int y;
};

int main()
{
X x = {1};
Y y = {2};

std::map <X, Y> Z;
std::pair<std::map<X, Y>::iterator,bool> lastval = Z.insert(std::pair<X, Y>(x, y));

// Error: Expression must be a modifiable lvalue;
lastval.first->first.x = 0;
}

我该怎么做?

最佳答案

输入 std::map (以及 std::set 的元素)是不可变的——您不能更改它们,因为这可能会改变顺序并破坏 map 。 std:map<K, V> 类型的值|实际上是std::pair<const K, V> .所以在你的情况下,lastval.first->second可以更改,但是 lastval.first->first是只读的,因为它是 const .

关于c++ - 修改最后插入到 std::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21267544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com