LINUX.ORG.RU

stl : find_if


0

0

есть массив из объектов типа A:

struct A {
int n;
A(){}
A(int n_) : n(n_) {}
bool have_such_value(int k) { return n==k; }
};

хочется для поиска использовать find_if, вот так:

std::find_if(v.begin(), v.end(), std::bind1st(std::mem_fun_ref(&A::have_such_value), 1));

но не компилируется, скорее всего из-за того, что сначала
вызывается bind1st к указателю на функцию, что невозможно, а только потом
используется итератор,
как это обойти?

anonymous

По-моему, bind2nd нужен.

hbee ★★★★
()
Ответ на: комментарий от anonymous

В SGIшном SLTе есть подходящая вещь. Подключи 
#include <ext/functional>

Print all of a map's values.

int main()
{
  map<int, double> M;
  M[1] = 0.3;
  M[47] = 0.8;
  M[33] = 0.1;

  transform(M.begin(), M.end(), ostream_iterator<double>(cout, " "),
            select2nd<map<int, double>::value_type>());
  // The output is  0.3 0.1 0.8
}

Definition
Defined in the standard header functional, and in the nonstandard backward-compatibility header function.h. This function object is an SGI extension; it is not part of the C++ standard.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.