gpt4 book ai didi

c++ - 如果 key 不存在,我可以从 std::map 获取值而不会崩溃吗?

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:10 24 4
gpt4 key购买 nike

我有这样的 C++ 代码:

if(rtstructure.find(varName) != rtstructure.end()) {
rtdef = rtstructure[varName];
}

其中 rtstructure 是 std::map,键是 std::string。这段代码有效,但让它搜索同一个 key 两次似乎是一种浪费。如果我省略赋值前后的 if 大小写,则当 varName 指向一个不存在的键时程序会崩溃。

我能否在单个 map 操作中查找 std::map 中的键并在它存在时获取它的值,如果它不存在则不会崩溃?

最佳答案

find 给你一个std::map<>::iterator持有/指向std::pair<> .迭代器可以保存和重复使用(假定您没有做任何使其无效的事情,例如 erase)。

// i don't know the type of rtstructure so i use auto
// you can replace it to the correct type if C++11 is not available
auto it = rtstructure.find(varName);
if(it != rtstructure.end()) {
rtdef = it->second;
}

关于c++ - 如果 key 不存在,我可以从 std::map 获取值而不会崩溃吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20182001/

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