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

How to sort an array of structs with std::binary_search or std::sort

本文关键字:std 数组 结构体 排序 binary 何使用 search sort      更新时间:2023-10-16

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

无论我在哪里看,我都能找到一些例子来展示如何用结构体的向量来做这件事。永远不要使用结构体数组。我不确定是否必须使用谓词或重载=操作符或其他。

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

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

同样,上面的调用将返回一个Iterator或最后一个Iterator。这是如何与结构体一起工作的。结构体没有迭代器,对吧?

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

std::beginstd::end调用T类型数组返回T*。因此,当考虑数组上的InputItOutputIt函数时,您总是可以用T*代替它们。std::find返回一个input。你得到的是一个指向相应数组元素的指针。如果没有找到,则返回last