gpt4 book ai didi

c++ - 如何从 map 中获取值?

转载 作者:IT老高 更新时间:2023-10-28 14:00:37 29 4
gpt4 key购买 nike

我有一个名为valueMapmap如下:

typedef std::map<std::string, std::string>MAP;
MAP valueMap;
...
// Entering data.

然后我通过引用将此映射传递给函数:

void function(const MAP &map)
{
std::string value = map["string"];
// By doing so I am getting an error.
}

如何从映射中获取值,该值作为对函数的引用传递?

最佳答案

std::map::operator[] 是一个非常量成员函数,并且你有一个 const 引用。

您要么需要更改 function 的签名,要么:

MAP::const_iterator pos = map.find("string");
if (pos == map.end()) {
//handle the error
} else {
std::string value = pos->second;
...
}

operator[] 通过向映射添加默认构造值并返回对它的引用来处理错误。当你只有一个 const 引用时,这是没有用的,所以你需要做一些不同的事情。

可以忽略这种可能性并写string value = map.find("string")->second;,如果你的程序逻辑以某种方式保证 "string" 已经是一个键。明显的问题是,如果你错了,你就会得到未定义的行为。

关于c++ - 如何从 map 中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10699689/

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