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
Last revision Both sides next revision
lower_bound_upper_bound [2009/04/28 14:56]
jg
lower_bound_upper_bound [2009/04/28 15:08]
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// **upper_bound** 
 <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 wartość **//​value//​** należy podać obiekt klasy elementów zamieszczonych w przeszukiwanym ciągu. 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 wartość **//​value//​** należy podać obiekt klasy elementów zamieszczonych w przeszukiwanym ciągu.
 Prosty przykład użycia: Prosty przykład użycia:
-<code cpp> #include <​vector>​+<code cpp>#​include <​vector>​
 #include <​algorithm>​ #include <​algorithm>​
  
Linia 62: Linia 62:
 } }
 </​code>​ </​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 69: 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.txt · ostatnio zmienione: 2009/04/28 15:08 przez jg