std::bsearch
From cppreference.com
Defined in header <cstdlib>
|
||
void* bsearch( const void* key, const void* ptr, size_t count, size_t size,
int (*comp)(const void*, const void*) ); |
||
Finds an element equal to element pointed to by key
in an array pointed to by ptr
. The array contains count
elements of size size
. Function pointed to by comp
is used for object comparison.
Contents |
[edit] Parameters
key | - | pointer to the element to search for | |||||||||
ptr | - | pointer to the array to examine | |||||||||
count | - | number of element in the array | |||||||||
size | - | size of each element in the array in bytes | |||||||||
comp | - | comparison function which returns a negative integer value if the first argument is less than the second, a positive integer value if the first argument is greater than the second and zero if the arguments are equal.
The function must not modify the objects passed to it. |
[edit] Return value
Pointer to the found element or NULL otherwise.
[edit] Example
#include <cstdlib> #include <iostream> int compare(const void *ap, const void *bp) { const int *a = (int *) ap; const int *b = (int *) bp; return *a - *b; } int show_ptr(int *p) { if (p == NULL) { std::cout << "NULL\n"; } else { std::cout << p1 << ' ' << *p1 << '\n'; } } int main(int argc, char **argv) { const int ARR_SIZE = 8; int arr[ARR_SIZE] = { 1, 2, 3, 4, 5, 6, 7, 8 }; int key1 = 4; int *p1 = (int *) std::bsearch(&key1, arr, ARR_SIZE, sizeof(arr[0]), compare); int key2 = 9; int *p2 = (int *) std::bsearch(&key2, arr, ARR_SIZE, sizeof(arr[0]), compare); std::cout << "p1: "; show_ptr(p1); std::cout << "p2: "; show_ptr(p2); }
Output:
p1: 0xbf9a4c88 4 p2: NULL
[edit] See also
sorts a range of elements with unspecified type (function) |
|
returns range of elements matching a specific key (function template) |
|