gpt4 book ai didi

c++ - unordered_map 关键问题 "expression must have integral or unscoped enum type"

转载 作者:行者123 更新时间:2023-11-27 23:12:54 27 4
gpt4 key购买 nike

我有这个:

unordered_map<string,string>* createDict(){

unordered_map<string,string>* Dict= new unordered_map<string,string>();

Dict["x"] = "a";
Dict["y"] = "b";
Dict["z"] = "c";

return Dict;
}

我得到了错误:

expression must have integral or unscoped enum type

但这在堆栈上分配时有效。解决这个问题最简单的方法是什么?我真的不喜欢必须创建 Pair 对象才能插入到 unordered_map 中。

最佳答案

Dict是指向 std::unordered_map<std::string, std::string> 的指针但是你把它当作一个对象来使用。您需要适本地取消引用该对象,例如,使用

(*Dict)["x"] = "a";
Dict->operator[]("y") = "b";
std::unordered_map<std::string, std::string>& ref = *Dict;
ref["z"] = "c";

我更喜欢第一个选项或使用

Dict->insert(std::make_pair("x", "a"));

但是,它的语义略有不同:如果键存在,则在使用下标运算符时它不会执行任何操作,并且赋值会更新值。

关于c++ - unordered_map 关键问题 "expression must have integral or unscoped enum type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18926595/

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