Я знаю, что C++ имеют lambdas и std :: bind1st, std :: bind2nd и std :: bind устарели.std :: bind2nd и std :: bind с двумерными массивами и массивами структур
Однако, начните с основ C++, мы сможем понять лучшие новые функции.
Итак, я начинаю с этим очень простым кодом, используя массив Int с:
Первого примера: с стандом :: bind2nd
int array1[] = { 10, 20, 30, 40, 50, 60, 40 };
int c1, c2, c3;
c1 = count_if(array1, array1 + 7, bind2nd(greater<int>(), 40));
c2 = count_if(array1, array1 + 7, bind2nd(less<int>(), 40));
c3 = count_if(array1, array1 + 7, bind2nd(equal_to<int>(), 40));
cout << "There are " << c1 << " elements that are greater than 40." << endl;
cout << "There are " << c2 << " elements that are lesser than 40." << endl;
cout << "There are " << c3 << " elements that are equal to 40." << endl;
Второго примером: с стандом :: bind
greater<int> big;
less<int> small;
equal_to<int> equal;
c1 = count_if(array1, array1 + 7, bind(big, _1, 40));
c2 = count_if(array1, array1 + 7, bind(small, _1, 40));
c3 = count_if(array1, array1 + 7, bind(equal, _1, 40));
cout << "There are " << c1 << " elements that are greater than 40." << endl;
cout << "There are " << c2 << " elements that are lesser than 40." << endl;
cout << "There are " << c3 << " elements that are equal to 40." << endl;
В обоих случаях s выход:
There are 2 elements that are greater than 40.
There are 3 elements that are lesser than 40.
There are 2 elements that are equal to 40.
Как я могу сделать то же самое с двумерных массивов, как показано ниже:
(я хочу, чтобы сделал те же операции с 2-координата)
int array2[7][2] = { { 1, 10 }, { 2, 20 }, { 3, 30 },
{ 4, 40 }, { 5, 50 }, { 6, 60 }, { 4, 40 } };
И с массивами Структуры, как это:
struct st
{
char c;
int i;
};
st array3[] = { { 'a', 10 }, { 'b', 20 }, { 'c', 30 },
{ 'd', 40 }, { 'e', 50 }, { 'f', 60 }, { 'd', 40 } };
в этом случае, я хочу сделать те же операции с полем «межд» в массиве структур.
Может ли кто-нибудь мне помочь?
Спасибо
Изучение (использование) 'std :: bind1st',' std :: bind2nd' или 'std :: bind' не поможет вам понять новые функции. – cpplearner
@cpplearner, я согласен с вами. Я упоминал только lambdas, потому что это альтернативный способ выполнить эту работу, но сегодня я заинтересован в использовании std :: bind2nd и std :: bind с структурами данных, о которых я упоминал, т. Е. Двумерными массивами и массивами структур. Это все, что я хочу знать. – user7140484