#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);
没问题。为什么std :: map不总是允许兼容类型作为其键类型?
但是,为什么不是coll[key] = 0;
好吗?
应用,因为[]没有得到更多重载在14,不像发现...? – deviantfan
'运算符[]'也没有找到时插入 – Danh
@deviantfan,为什么不重载[]? – xmllmx