2017-07-11 45 views
0

將鍵值對插入到地圖中時,如果鍵是「」並且對應該值,則會出現什麼行爲。例如將「」鍵插入地圖

std::map<std::string, std::string> map1; 
std::string key = ""; 
std::string value = "xyz"; 

map1.insert(std::pair<std::string, std::string>(key, value)); 

而處理這種情況的最佳方法是什麼?

+0

你是問,如果'地圖:: insert'對空字符串中的特殊行爲? – juanchopanza

+0

juanchopanza有沒有特別的行爲?這種情況是否有效?我怎樣才能避免這種特殊情況? – user2235747

+0

不,沒有任何特別的行爲,但是你的問題暗示它是,或者你沒有閱讀任何'map :: insert'的文檔。 – juanchopanza

回答

3

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