Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用std::binary_search或std::sort对结构数组进行排序_C++_Algorithm_Data Structures_Stl_Structure - Fatal编程技术网

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