<b>1、低效率的用法</b>
// 先查找是否存在,如果不存在,則插入
if (map.find(X) == map::end()) // 需要find一次
{
map.insert(x); // 需要find一次
}
// 下面這段代碼是一個意思
if (0 == map.count(X) // 需要find一次
// 或者是先判斷是否存在,如果不存在則插入,反之如果存在則修改
if (map.count(X) > 0) // 需要find一次
map.erase(X); // 需要find一次
map.insert(x); // 需要find一次
// 對于erase存在同樣低效的用法
else
// 不存在時的處理
<b>2、高效率的用法</b>
// 解決辦法,充分利用insert和erase的傳回值,将find次數降為1
map::size_type num_erased = map.erase(X); // 需要find一次
if (0 == num_erased)
// 存在且删除後的處理
pair<map::iterator, bool> result_inserted;
result_inserted = map.insert(X);
if (result_inserted.second)
// 不存在,插入成功後的處理
// 已經存在,插入失敗後的處理
result_inserted.first->second = X; // 修改為新值
本文轉自eyjian 51CTO部落格,原文連結:http://blog.51cto.com/mooon/909785,如需轉載請自行聯系原作者