Поиск элементов. Поиск первого совпадающего элемента (окончание)

   
На этом шаге мы рассмотрим еще один пример использования алгоритма поиска первого соврадающего элемента.

   
В следующем примере алгоритм find_if() используется для поиска элементов по совершенно иному критерию:

//---------------------------------------------------------------------------

#include <vcl.h>
#include <iterator>
#include "algostuff.hpp"

#include <conio.h> //необходимо для getch()

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
using namespace std;

std::string ToRus(const std::string &in)
{
  char *buff = new char [in.length()+1];
  CharToOem(in.c_str(),buff);
  std::string out(buff);
  delete [] buff;
  return out;
}

int main()
{
  vector<int> coll;
  vector<int>::iterator pos;

  INSERT_ELEMENTS(coll,1,9);

  PRINT_ELEMENTS(coll,"Вектор:\n ");
  // Поиск первого элемента, большего 3
  pos = find_if (coll.begin(), coll.end(),    // Интервал
                 bind2nd(greater<int>(),3));  // Критерий

  // Вывод позиции
  cout << ToRus("Элемент в позиции ")
       << distance(coll.begin(),pos) + 1
       << ToRus(" - первый, больший 3") << endl;

  // Поиск первого элемента, кратного 3
  pos = find_if (coll.begin(), coll.end(),
                 not1(bind2nd(modulus<int>(),3)));

  // Вывод позиции
  cout << ToRus("Элемент в позиции ")
       << distance(coll.begin(),pos) + 1
       << ToRus(" - первый, кратный 3") << endl;


  getch();
  return 0;
}

//---------------------------------------------------------------------------

Текст этого примера можно взять 113 шаге приведен пример использования алгоритма find() для поиска первого простого числа.

   
На следующем шаге мы рассмотрим поиск первых n последовательных совпадений.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий