gpt4 book ai didi

c++ - 为什么 std::map 并不总是允许兼容类型作为其键类型?

转载 作者:搜寻专家 更新时间:2023-10-30 23:53:21 24 4
gpt4 key购买 nike

#include <map>
#include <string>
#include <string_view>

using namespace std;

int main()
{
string_view key = "hello";
map<string, int, less<>> coll;
coll.find(key); // ok
coll[key] = 0; // !!! error ???
}

键类型为std::string,兼容类型为std::string_view。从 C++14 开始,std::map::find 允许使用兼容的键;所以 coll.find(key); 没问题。

但是,为什么不 coll[key] = 0; 也可以吗?

最佳答案

coll.find(key) 只要求 key 与实际的键类型可比较,而 std::string_view std::string 相当。但是,为了能够将 key 插入到 coll 中,key 需要可转换 std::string,它不是(隐含地,无论如何)。

关于c++ - 为什么 std::map 并不总是允许兼容类型作为其键类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41355207/

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