Void main(). cout << lexicographical_compare(a,a+m,b,b+m); //1
{
const int m = 5;
double a[m] = {5, 3, 2, 3, 1},b[m]={5, 3, 2, 3, 2},
c[m] = {5, 3, 1, 3, 10};
cout << lexicographical_compare(a,a+m,b,b+m); //1
cout << lexicographical_compare(a,a+m,c,c+m); //0
cout << lexicographical_compare(a,a+m,b,b+m,
greater<int>()); //0
}
Алгоритм mergeвиконує злиття відсортованих послідовностей.
Приклад:
#include <iostream>
#include <algorithm>
using namespace std;
Void main()
{
const int m = 5;
double a[m] = {3, 4, 8, 17, 20},
b[m] = {5, 6, 8, 10, 35}, c[m * 2];
int i;
merge(a, a + m, b, b + m, c);
// 3 4 5 6 8 8 10 17 20 35
for (i = 0; i < m * 2; i++)cout << c [ i ] << " ";
cout << endl;
}
Алгоритмиnext_permutation, prev_permutation.
Елементи будь-якої послідовності можна розташувати різними способами.
Для послідовності довжини n таких перестановок існує n! (1*2*...*n).
Алгоритм next_permutation проводить чергову перестановку в лексикографічному порядку, а алгоритм prev_permutation – попередню. Алгоритми повертають булеве значення true, якщо наступна перестановка існує, і false в іншому випадку.
template<class Bi>
bool next__permutation(Bi first , Bi last);
template<class Bi, class Compare>
bool next_permutation(Bi first, Bi last, Compare comp);
template<class Bi>
bool prev_permutation(Bi first, Bi last);
template<class Bi, class Compare>
bool prev_permutation(Bi first, Bi last, Compare comp);
Приклад:
#include <iostream>
#include <algorithm>
using namespace std;
Дата добавления: 2014-12-26; просмотров: 596;