Просмотр содержимого документа
«Алгоритм Find библиотeка STL C++»
Алгоритмы ( alghorithm)
Алгоритмы – шаблонные функции, которые работают с контейнерам через итераторы.
Обычно алгоритм получает в качестве параметров начало и конец обрабатываемой последовательности.
Разным алгоритмам требуются разные типы итераторов, например, сортировка требует итератор произвольного доступа (поэтому работает только с векторами и деками), а копирование – прямой итератор.
Алгоритмы
Алгориты делятся на несколько категорий: немодифицирующие алгоритмы (не изменяющие порядок следования элементов в контейнере) – count, count_if, find, find_if и др.; модифицирующие алгоритмы (изменяющие порядок следования элементов в контейнере) - copy, replace, reverse, swap (обмен местами двух элементов) и др.; алгоритмы сортировки и поиска (упорядочивание, поиск, слияние и т.д.) – merge, sort, stable_sort (сохраняет порядок для одинаковых элементов), partial_sort (частичная сортировка), max_element и др.; алгоритмы работы с множествами – accumulate, includes set_intersection set_difference и др.
v ( A , A + 6 ); // копируем массив в вектор if ( find ( v . begin (), v . end (), 49 ) ! = v . end ()) cout // используем алгоритм find else cout return 0 ; } " width="640"
Примеры алгоритмов для вектора. Поиск элемента в интервале .
1 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include // Используем алгоритм
# include
#include // используем вектор
using namespace std ;
int main ( void )
{
int A [] = { 1 , 2 , 3 , 4 , 49 , 100 }; // массив для записи в вектор значений
vector int v ( A , A + 6 ); // копируем массив в вектор
if ( find ( v . begin (), v . end (), 49 ) ! = v . end ()) cout // используем алгоритм find
else cout
return 0 ;
}
Алгоритм Find
- Достаточно простой алгоритм для понимания. В алгоритм передается две точки v . begin и v . end , которые обозначают точку старта и точку финиша поиска. Между этими точками некоторый диапазон, в котором находятся разные значения.
v(A,A+6); int i = find(v.begin(), v. end (), 49) - v.begin(); // используем алгоритм find для поиска индекса cout return 0; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include #include #include using namespace std ; int main ( void ) { int A [] = { 1 , 2 , 3 , 4 , 49 , 100 , 49 }; vector int v ( A , A + 6 ); int i = find ( v . begin (), v . end (), 49 ) - v . begin (); // используем алгоритм find для поиска индекса cout return 0 ; } " width="640"
С помощью алгоритма find можно узнать индекс найденного элемента
- using namespace std;
- int main( void )
- {
- int A[]={1,2,3,4,49,100,49};
- vectorint v(A,A+6);
-
- int i = find(v.begin(), v. end (), 49) - v.begin(); // используем алгоритм find для поиска индекса
- cout
- return 0;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include
#include
#include
using namespace std ;
int main ( void )
{
int A [] = { 1 , 2 , 3 , 4 , 49 , 100 , 49 };
vector int v ( A , A + 6 );
int i = find ( v . begin (), v . end (), 49 ) - v . begin (); // используем алгоритм find для поиска индекса
cout
return 0 ;
}