Пространства имён
Варианты
Действия

std::bsearch

Материал из cppreference.com
 
 
Алгоритмы
Функции
Немодифицирующие линейные операции
Модифицирующие линейные операции
Разделение
Сортировка (на отсортированных промежутках)
Бинарный поиск (на отсортированных промежутках)
Множества (на отсортированных промежутках)
Куча
Минимум/максимум
Числовые операции
Библиотека C
bsearch
 
Заголовочный файл <cstdlib>
void* bsearch( const void* key, const void* ptr, size_t count, size_t size,
               int (*comp)(const void*, const void*) );
Находит элемент, равный элемент, на который указывает key в массиве, на который указывает ptr. Массив содержит элементы count размер size. Функция, на которую указывает comp используется для сравнения объектов.
Original:
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.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Содержание

[править] Параметры

key -
Указатель на элемент для поиска
Original:
pointer to the element to search for
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
ptr -
Указатель на массив для проверки
Original:
pointer to the array to examine
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
count -
Количество элементов в массиве
Original:
number of element in the array
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
size -
Размер каждого элемента массива в байтах
Original:
size of each element in the array in bytes
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
comp - функция сравнения, возвращающая отрицательное целое значение, если первый аргумент меньше второго, положительное целое значение, если первый аргумент больше второго и ноль, если аргументы равны. key is passed as the first argument, an element from the array as the second.

Сигнатура функции сравнения должна быть эквивалентна следующей:

int cmp(const void *a, const void *b);

Функция не должна изменять объекты, переданные ей.

[править] Возвращаемое значение

Указатель на найденный элемент или NULL иначе.
Original:
Pointer to the found element or NULL otherwise.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[править] Пример

#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);
}

Вывод:

p1: 0xbf9a4c88 4
p2: NULL

[править] См. также

виды диапазон элементов с неопределенным типом
Original:
sorts a range of elements with unspecified type
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(функция) [edit]
возвращает набор элементов для конкретного ключа
Original:
returns range of elements matching a specific key
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(шаблон функции) [edit]