函数
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
未定义。如果 target
在 array
中多次出现,返回第一个实例的索引。此搜索使用二分搜索,因此 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
用于定位
target
的GCompareFunc
。 out_match_index
-
类型:
guint*
返回元素的索引,如果找到。
此参数将由函数设置。 参数可以是 NULL
。