Narzędzia użytkownika

Narzędzia witryny


lower_bound_upper_bound

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision
Previous revision
lower_bound_upper_bound [2009/04/28 14:44]
jg
lower_bound_upper_bound [2009/04/28 15:08] (aktualna)
jg
Linia 40: Linia 40:
 ===== Wartość zwracana ===== ===== Wartość zwracana =====
  
-W wyniku działania obu funkcji zwracany jest iterator wskazujący na element ​zadanego ​zbioru. W wypadku "​lower_bound"​ wskazywana jest pierwsza pozycja, na ktorą należy wstawić zadany element, aby nie zaburzyć posortowanego ciągu. "​upper_bound"​ zwraca ostatnią taką pozycję.+W wyniku działania obu funkcji zwracany jest iterator wskazujący na element ​badanego ​zbioru. W wypadku "​lower_bound"​ wskazywana jest pierwsza pozycja, na ktorą należy wstawić zadany element, aby nie zaburzyć posortowanego ciągu. "​upper_bound"​ zwraca ostatnią taką pozycję.
  
 ===== Użycie ===== ===== Użycie =====
  
-//​analogicznie dla//<​code cpp> upper_bound</​code>​ 
 <code cpp>​lower_bound(first,​ last, value [, comp])</​code>​ <code cpp>​lower_bound(first,​ last, value [, comp])</​code>​
 +//​analogicznie dla// **upper_bound**
 +
 +Algorytm przeszukuje dane w zakresie **[first;​last)**. Dla poprawnego działania należy podać iteratory na pierwszy element ciągu przeszukiwanego oraz na pierwszy element za ostatnim do przeszukiwania. Jako **//​value//​** należy podać obiekt klasy elementów zamieszczonych w przeszukiwanym ciągu.
 +Prosty przykład użycia:
 +<code cpp>#​include <​vector>​
 +#include <​algorithm>​
 +
 +int main()
 +{
 + std::​vector<​int>​ liczby;
 + for(int i=0;​i<​10;​++i)
 + liczby.push_back(i);​
 + std::​vector<​int>::​iterator iter;
 + iter = lower_bound(liczby.begin(),​liczby.end(),​3);​
 + return 0;
 +}
 +</​code>​
 +
 +Wersja z predykatem wymaga podania jako czwartego argumentu obiektu funkcyjnego służącego do porównywania danych obiektów. Przykład użycia:
 +<code cpp>#​include <​vector>​
 +#include <​algorithm>​
 +
 +
 +class rowne
 +{
 +public:
 + bool operator()(const int &a, const int &b)
 + {
 + return ( a < b) ? true : false;
 + };
 +};
 +
 +int main()
 +{
 + std::​vector<​int>​ liczby;
 + for(int i=0;​i<​10;​++i)
 + liczby.push_back(i);​
 + std::​vector<​int>::​iterator iter;
 + iter = lower_bound(liczby.begin(),​liczby.end(),​3,​rowne());​
 + return 0;
 +}</​code>​
  
 ===== Ostrzeżenie ===== ===== Ostrzeżenie =====
Linia 53: Linia 93:
  
 Δ Wersja z predykatem wymaga danych posortowanych przy użyciu tego predykatu. Δ Wersja z predykatem wymaga danych posortowanych przy użyciu tego predykatu.
 +
 +===== Przykładowy program wykorzystujący algorytmy upper_bound oraz lower_bound =====
 +{{upper_lower_bound.cpp}}
lower_bound_upper_bound.1240922696.txt.gz · ostatnio zmienione: 2009/04/28 14:44 przez jg