我有一个使用std :: map的循环模式.
我只想在键存在时检索值,否则我不想插入元素.目前我正在使用count(key)或find(key)(哪一个更好?从文档中复杂性似乎是相同的),如果它们返回一个正值,我访问地图.但是我想避免在地图上使用两个操作.就像是:
map<string, int> myMap;
int returnvalue;
boole result = myMap.get("key1",returnValue)
if(result){
\\ use returnValue
}
Run Code Online (Sandbox Code Playgroud)
阅读cplusplus.com上的std :: map文档我找到了两个访问地图元素的函数:
他们都不满足我的需要.
用途map::find:
auto it = myMap.find(key);
if (it != myMap.end())
{
// use it->second
}
else
{
// not found
}
Run Code Online (Sandbox Code Playgroud)
这部分很简单.更难的问题是当你想要查找一个元素是否存在并返回时,如果它存在,但是否则在该键上插入一个新元素,所有这些都不会搜索地图两次.为此你需要使用lower_bound后面的暗示插入.
| 归档时间: |
|
| 查看次数: |
2362 次 |
| 最近记录: |