#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