将“”键插入地图
问题描述:
将键值对插入到地图中时,如果键是“”并且对应该值,则会出现什么行为。例如将“”键插入地图
std::map<std::string, std::string> map1;
std::string key = "";
std::string value = "xyz";
map1.insert(std::pair<std::string, std::string>(key, value));
而处理这种情况的最佳方法是什么?
答
std::string
没有特殊的状态或值“null”。用""
初始化的字符串只是一个空字符串,但它仍然是一个像其他任何字符串一样的字符串。将它用作密钥时,std::map::insert
将执行以前的操作:仅当没有具有相同密钥的元素已存在时才插入该元素。
请注意,您可以检查是否插入使用的返回值的第二个成员成功:
auto res = map1.insert(std::pair<std::string, std::string>(key, value));
std::cout << std::boolalpha;
std::cout << "Success? " << res.second << '\n'; // Success? true
// try again (and fail)
auto res = map1.insert(std::pair<std::string, std::string>(key, value));
std::cout << "Success? " << res.second << '\n'; // Success? false
你是问,如果'地图:: insert'对空字符串中的特殊行为? – juanchopanza
juanchopanza有没有特别的行为?这种情况是否有效?我怎样才能避免这种特殊情况? – user2235747
不,没有任何特别的行为,但是你的问题暗示它是,或者你没有阅读任何'map :: insert'的文档。 – juanchopanza