函数

GLibArraybinary_search

since: 2.62

声明 [src]

gboolean
g_array_binary_search (
  GArray* array,
  gconstpointer target,
  GCompareFunc compare_func,
  guint* out_match_index
)

描述 [src]

通过基于给定比较函数 compare_func 的二分查找来检查 target 是否存在于 array 中,其中比较函数以项目指针作为参数。如果找到元素,则返回 TRUE 并在 out_match_index 中返回元素索引(如果非 NULL)。否则,返回 FALSE 并且 out_match_index 未定义。如果 targetarray 中多次出现,返回第一个实例的索引。此搜索使用二分搜索,因此 array 必须绝对排序才能返回正确的结果(如果不排序,则函数可能会产生假阴性)。

以下示例定义了一个比较函数并在 GArray 中搜索一个元素

static gint
cmpint (gconstpointer a, gconstpointer b)
{
  const gint *_a = a;
  const gint *_b = b;

  return *_a - *_b;
}
...
gint i = 424242;
guint matched_index;
gboolean result = g_array_binary_search (garray, &i, cmpint, &matched_index);
...

Available since: 2.62

此函数对语言绑定不可直接访问。

参数

array

类型: 一个 gpointer 数组

这是一个 GArray

数据是由函数的调用者拥有的。
target

类型: gconstpointer

指向要查找的项目指针。

参数可以是 NULL
数据是由函数的调用者拥有的。
compare_func

类型: GCompareFunc

用于定位 targetGCompareFunc

out_match_index

类型: guint*

返回元素的索引,如果找到。

此参数将由函数设置。
参数可以是 NULL

返回值

类型: gboolean

TRUE 如果 targetarray 中的一个元素,否则为 FALSE