у меня есть карта STL;я хотел бы получить первое ненулевое значение на карте;Есть ли эффективный / быстрый способ сделать это?
#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
Нет ничего быстрее, чем просто просмотреть и найти то, что вы ищете
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; } }