CGAL 6.1.2 - STL Extensions for CGAL: Generic Algorithms

CGAL 6.1.2 - STL Extensions for CGAL

Loading...
Searching...
No Matches
Functions
Generic Algorithms
Reference Manual

##

## Functions
template<class ForwardIterator >
std::pair< ForwardIterator, ForwardIterator > | CGAL::min_max_element (ForwardIterator first, ForwardIterator last)
| Computes the minimal and the maximal element of a range.
template<class ForwardIterator , class CompareMin , class CompareMax >
std::pair< ForwardIterator, ForwardIterator > | CGAL::min_max_element (ForwardIterator first, ForwardIterator last, CompareMin comp_min, CompareMax comp_max)
| Computes the minimal and the maximal element of a range.
template<class RandomAccessIterator , class RandomGenerator >
void | CGAL::cpp98::random_shuffle (RandomAccessIterator begin, RandomAccessIterator end, RandomGenerator &random)
| Replacement for `std::random_shuffle` which was deprecated in C++14, and removed by C++17.
template<class RandomAccessIterator >
void | CGAL::cpp98::random_shuffle (RandomAccessIterator begin, RandomAccessIterator end)
| Replacement for `std::random_shuffle` which was deprecated in C++14, and removed by C++17.

## Function Documentation

## ◆ min_max_element() [1/2]

template<class ForwardIterator >

std::pair< ForwardIterator, ForwardIterator > CGAL::min_max_element | ( | ForwardIterator | first,
|  | ForwardIterator | last
| ) |  |

`#include <CGAL/algorithm.h>`

Computes the minimal and the maximal element of a range.

It is modeled after the STL functions `std::min_element` and `std::max_element`. The advantage of `min_max_element()` compared to calling both STL functions is that one only iterates once over the sequence. This is more efficient especially for large and/or complex sequences.

Example

The following example program computes the minimal and maximal element of the sequence `(3,\,6,\,5)`. Hence the output is `min = 3, max = 6`.

File STL_Extension/min_max_element_example.cpp

#include <CGAL/algorithm.h>
#include <vector>
#include <iostream>
using std::vector;
using std::pair;
using std::cout;
using std::endl;
using CGAL::min_max_element;
int main()
{
vector< int > v;
v.push_back(3);
v.push_back(6);
v.push_back(5);
typedef std::vector< int >::iterator iterator;
pair< iterator, iterator > p = min_max_element(v.begin(), v.end());
cout << "min = " << *p.first << ", max = " << *p.second << endl;
return 0;
}
CGAL::min_max_element
std::pair< ForwardIterator, ForwardIterator > min_max_element(ForwardIterator first, ForwardIterator last)
Computes the minimal and the maximal element of a range.

Returns
  a pair of iterators where the first component refers to the minimal and the second component refers to the maximal element in the range [`first`, `last`). The ordering is defined by `operator<` on the value type of `ForwardIterator`.

Examples
  STL_Extension/min_max_element_example.cpp.

## ◆ min_max_element() [2/2]

template<class ForwardIterator , class CompareMin , class CompareMax >

std::pair< ForwardIterator, ForwardIterator > CGAL::min_max_element | ( | ForwardIterator | first,
|  | ForwardIterator | last,
|  | CompareMin | comp_min,
|  | CompareMax | comp_max
| ) |  |

`#include <CGAL/algorithm.h>`

Computes the minimal and the maximal element of a range.

It is modeled after the STL functions `std::min_element` and `std::max_element`. The advantage of `min_max_element()` compared to calling both STL functions is that one only iterates once over the sequence. This is more efficient especially for large and/or complex sequences.

Returns
  a pair of iterators where the first component refers to the minimal and the second component refers to the maximal element in the range [`first`, `last`).

Template Parameters

  CompareMin | is an adaptable binary function object: `VT` \( \times\) `VT` \( \rightarrow\) `bool` where `VT` is the value type of `ForwardIterator`.
  CompareMax | is an adaptable binary function object: `VT` \( \times\) `VT` \( \rightarrow\) `bool` where `VT` is the value type of `ForwardIterator`.

## ◆ random_shuffle() [1/2]

template<class RandomAccessIterator >

void CGAL::cpp98::random_shuffle | ( | RandomAccessIterator | begin,
|  | RandomAccessIterator | end
| ) |  |

`#include <CGAL/algorithm.h>`

Replacement for `std::random_shuffle` which was deprecated in C++14, and removed by C++17.

In the STL it was replaced by `std::shuffle`.

Note
  The implementation in CGAL produces the same order on all platforms.

## ◆ random_shuffle() [2/2]

template<class RandomAccessIterator , class RandomGenerator >

void CGAL::cpp98::random_shuffle | ( | RandomAccessIterator | begin,
|  | RandomAccessIterator | end,
|  | RandomGenerator & | random
| ) |  |

`#include <CGAL/algorithm.h>`

Replacement for `std::random_shuffle` which was deprecated in C++14, and removed by C++17.

In the STL it was replaced by `std::shuffle`.

Note
  The implementation in CGAL produces the same order on all platforms.