bsearch

来自cppreference.com
< c‎ | algorithm

在头文件 <stdlib.h> 中定义
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用于.
原文:
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.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

目录

[编辑] 参数

key -
要搜索的元素的指针
原文:
pointer to the element to search for
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
ptr -
指针的数组检查
原文:
pointer to the array to examine
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
count -
数组中的元素的数量
原文:
number of element in the array
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
size -
大小(以字节为单位)的阵列中的每个元素
原文:
size of each element in the array in bytes
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
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. key is passed as the first argument, an element from the array as the second.
The signature of the comparison function should be equivalent to the following:

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

The function must not modify the objects passed to it.

[编辑] 返回值

指针的元素或以其他方式NULL.
原文:
pointer to the found element or NULL otherwise.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 为例

#include <stdlib.h>
#include <stdio.h>
 
struct data {
  int nr;
  char const *value;
} dat[] = {
  {1, "Foo"}, {2, "Bar"}, {3, "Hello"}, {4, "World"}
};
 
int data_cmp(void const *lhs, void const *rhs) {
  struct data const *const l = lhs;
  struct data const *const r = rhs;
  return l->nr < r->nr;
}
 
int main(void) {
  struct data key = { .nr = 3 };
  struct data const *res = bsearch(&key, dat, sizeof(dat)/sizeof(dat[0]),
                                   sizeof(dat[0]), data_cmp);
  if(!res) {
    printf("No %d not found\n", key.nr);
  }
  else {
    printf("No %d: %s\n", res->nr, res->value);
  }
}

输出:

No 3: Hello

[编辑] 另请参阅

对未指定类型的多个元素进行排序
(函数) [edit]
C++ documentation for bsearch