1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
C++ Листинг #1.1 adjacent_find #include <iostream> #include <algorithm> using namespace std; int main(){ vector<int> v = {10, 20, 30, 30, 30, 30, 40, 10}; vector<int>::iterator it; //для сохранения результатов adjacent_find it = adjacent_find(v.begin(), v.end()); cout << *it; //Выводим найденное значение } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//C++ Листинг #1.2 #include <iostream> #include <algorithm> using namespace std; int main(){ setlocale(LC_ALL, ""); vector<int> v = {10, 20, 30, 40, 10}; vector<int>::iterator it; //для сохранения результатов adjacent_find it = adjacent_find(v.begin(), v.end()); if (it !=v.end()){ cout << *it << '\n'; //Выводим найденное значение } else { cout << "нет ни одной одинаковой пары значений\n"; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//C++ Листинг #2.1 #include <iostream> #include <algorithm> using namespace std; int main(){ setlocale(LC_ALL, ""); vector<int> v = {40, 20, 20, 10, 20, 30, 30, 30, 40, 10}; vector<int>::iterator it; //для сохранения результатов adjacent_find it = adjacent_find(v.begin(), v.end()); while (it != v.end()){ cout << *it << " " << *(it + 1) << '\n'; it = adjacent_find(it+1, v.end()); //Не забываем переключиться на следующий за найденным вхожением итератор } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//C++ Листинг #3.1 #include <iostream> #include <algorithm> using namespace std; bool my_predicat(int left, int right){ return right - left == 5; //Проверяем, что правое значение последовательности больше левого на 5 } int main(){ setlocale(LC_ALL, ""); vector<int> v = {10, 20, 30, 40, 45, 10}; vector<int>::iterator it; //для сохранения результатов adjacent_find it = adjacent_find(v.begin(), v.end(), my_predicat); if (it !=v.end()){ cout << *it << '\n'; //Выводим найденное значение } else { cout << "нет ни одной одинаковой пары значений\n"; } } |
1 2 3 4 |
//Листинг #a1 bool my_predicat(int left, int right){ return right - left == 5; //Проверяем, что правое значение последовательности больше левого на 5 } |
1 2 3 4 5 6 7 |
//Листинг #a2 bool my_predicat(int left, int right){ if (right - left == 5){ //Проверяем, что правое значение последовательности больше левого на 5 return true; } return false; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//C++ Листинг #3.2 #include <iostream> #include <algorithm> using namespace std; int main(){ setlocale(LC_ALL, ""); vector<int> v = {10, 20, 30, 40, 45, 10}; vector<int>::iterator it; //для сохранения результатов adjacent_find it = adjacent_find(v.begin(), v.end(), [](int left, int right){return right - left == 5; }); //Сразу по месту if (it !=v.end()){ cout << *it << '\n'; //Выводим найденное значение } else { cout << "нет ни одной одинаковой пары значений\n"; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
//C++ Листинг #3.3 #include <iostream> #include <algorithm> using namespace std; int main(){ setlocale(LC_ALL, ""); vector<int> v = {10, 20, 30, 40, 45, 10}; vector<int>::iterator it; //для сохранения результатов adjacent_find int dx = 5; it = adjacent_find(v.begin(), v.end(), [dx](int left, int right){return right - left == dx; }); //С использованием захвата if (it !=v.end()){ cout << *it << '\n'; //Выводим найденное значение } else { cout << "нет ни одной одинаковой пары значений\n"; } } |
на втом примере эту функцию bool myfunction (int i ,int j) внтри main я не вижу . как она вызивается?
А что делать, если вызов алгоритма adjacent_find вызывает ошибку «Call to undefined function»
при условии , что файл <algorithm> подключён?
Менять компилятор. Вероятно.