我正在寻找一个优雅的替代品:
if (MyMap.count(x)) return MyMap[x];
Run Code Online (Sandbox Code Playgroud)
虽然这个代码做了我想要的 - 它返回一个条目(如果存在) - 在元素存在的情况下,它搜索地图两次.有更优雅的方式吗?
std::map::find()返回一个iterator.
您可以取消引用迭代器end(),而不需要map再次搜索.
对于一个简单的例子:
typedef std::map<char, int> test_t;
test_t test;
test.insert(std::make_pair('a', 1));
test_t::iterator found = test.find('a');
if (found != test.end())
{
std::cout << found->second;
}
else
{
std::cout << "Not found";
}
Run Code Online (Sandbox Code Playgroud)
也许在代码量方面不是更优雅,但比你现在拥有的更有效.
这是执行此操作的典型方法:
MyMapType::const_iterator i = myMap.find(x);
if (i != myMap.end())
return i->second;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |