我有一张STL地图; 我想在地图中获得第一个非NULL值; 是否有一种有效/快速的方法来做到这一点?
答案 0 :(得分:4)
没有什么比通过循环找到你正在寻找的东西更快的了解
for (map<X,Y>::const_iterator i = m.begin(); i != m.end(); ++i)
{
if (i->second != NULL)
{
// do something with first non-NULL value
break;
}
}
答案 1 :(得分:4)
#include <map>
#include <algorithm>
#include <iostream>
using namespace std;
bool IsNotNull(const pair<const int, int>& i)
{
return i.second != 0;
}
int main() {
map<int, int> m;
m[0] = 0;
m[1] = 1;
map<int, int>::const_iterator it = find_if(m.begin(), m.end(), IsNotNull);
cout << it->second << endl;
return 0;
}