C++ 如何使用std::binary_search或std::sort对结构数组进行排序
我有一个有序的结构数组。 我想在上面使用C++ 如何使用std::binary_search或std::sort对结构数组进行排序,c++,algorithm,data-structures,stl,structure,C++,Algorithm,Data Structures,Stl,Structure,我有一个有序的结构数组。 我想在上面使用std::binary\u search或std::find 无论我在哪里寻找,我都能找到一些例子来说明如何使用结构向量来实现这一点。从不使用结构数组。我不确定是否必须使用谓词或重载=运算符或什么 如果我正在使用以下调用,那么std::find的第三个参数必须是什么: 模板 输入查找(先输入,后输入,常量和值) 此外,它还表示上述调用将返回一个迭代器或返回最后一个迭代器。这是如何与结构一起工作的。结构没有迭代器,是吗 如果要将其应用于数组arr的(有效)数
std::binary\u search
或std::find
无论我在哪里寻找,我都能找到一些例子来说明如何使用结构向量来实现这一点。从不使用结构数组。我不确定是否必须使用谓词或重载=
运算符或什么
如果我正在使用以下调用,那么std::find
的第三个参数必须是什么:
模板
输入查找(先输入,后输入,常量和值)代码>
此外,它还表示上述调用将返回一个迭代器或返回最后一个迭代器。这是如何与结构一起工作的。结构没有迭代器,是吗 如果要将其应用于数组arr
的(有效)数组范围[a,b)
,InputIt
应为std::begin(arr)+a
,OutputIt
应为std::begin(arr)+b
。如果b
等于arr
中的元素数,则您也可以将OutputIt
设置为std::end(arr)
std::begin
和std::end
调用类型为T的数组返回T*。因此,在考虑数组上的这些函数时,您总是可以用T*替换InputIt
和OutputIt
。std::find
返回一个InputIt。因此,您得到的是一个指向适当数组元素的指针。如果没有任何结果,则d、 它返回last
这与数组作为向量是一样的。如果你使用的是C数组,它们应该是std::array
,而std::begin
和std::end
都可以。没有std::array就没有办法了吗?如果我使用的是纯结构a[MAX]?std::begin
和std::end
都可以正常工作。对于数组,迭代器将是指针。指针满足随机访问迭代器的要求。@chris以及如何告诉std::find
使用结构的哪个特定数据项进行比较?重载=
运算符?以及retu会做什么rn值包含?索引?,如任何引用中所述,std::find
,或者如果,您可以使用std::find\u。它返回一个迭代器(此处的指针)到找到的元素或last
。如何解释返回值?@Wildling:对于T
类型的原始数组,迭代器类型是指向-T
。