如何获取MAP中的第一个非NULL值?

时间:2011-08-25 19:01:24

标签: c++ algorithm stl

我有一张STL地图; 我想在地图中获得第一个非NULL值; 是否有一种有效/快速的方法来做到这一点?

2 个答案:

答案 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;

}

Ideone demo