Как получить первое ненулевое значение в MAP? - PullRequest
1 голос
/ 25 августа 2011

у меня есть карта STL;я хотел бы получить первое ненулевое значение на карте;Есть ли эффективный / быстрый способ сделать это?

Ответы [ 2 ]

4 голосов
/ 25 августа 2011
#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

4 голосов
/ 25 августа 2011

Нет ничего быстрее, чем просто просмотреть и найти то, что вы ищете

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;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...