如何使用std :: binary_search或std :: sort对结构数组进行排序

时间:2014-07-06 23:16:46

标签: c++ algorithm data-structures stl structure

我有一个排序的结构数组。 我想在其上使用std::binary_searchstd::find

我看到的每个地方,都会找到一些示例,展示如何使用结构矢量来完成它。永远不会有一系列结构。我不确定是否必须使用谓词或重载=运算符或什么。

如果我使用以下调用,那么std::find的第三个参数必须是什么:

template< class InputIt, class T > InputIt find( InputIt first, InputIt last, const T& value );

此外,它表示上述调用将返回Iterator或返回最后一个。这如何与结构一起使用。结构没有迭代器,是吗?

1 个答案:

答案 0 :(得分:2)

如果要将其应用于数组[a, b)的(有效)数组范围arr,则InputIt应为std::begin(arr) + a,而OutputIt应该std::begin(arr) + bb。如果arr等于OutputIt中的元素数量,那么您也可以将std::end(arr)设置为std::begin

std::endInputIt调用类型为T的数组返回T *。因此,在数组上考虑这些函数时,您始终可以将T *替换为OutputItstd::findlast返回一个InputIt。所以,你得到的是指向相应数组元素的指针。如果未找到任何内容,则返回{{1}}。