【发布时间】:2014-07-06 23:16:45
【问题描述】:
我有一个排序的结构数组。
我想在上面使用std::binary_search 或std::find。
在我所见的任何地方,我都能找到一些示例,这些示例展示了如何使用结构向量来做到这一点。永远不要使用结构数组。我不确定是否必须使用谓词或重载 = 运算符或其他什么。
如果我使用以下调用,std::find 的第三个参数必须是什么:
template< class InputIt, class T >
InputIt find( InputIt first, InputIt last, const T& value );
此外,上面的调用将返回一个迭代器或返回最后一个。这如何与结构一起使用。结构没有迭代器,是吗?
【问题讨论】:
-
数组作为向量也是一样的。如果您使用的是 C 数组,则它们应该是
std::array,std::begin和std::end无论如何都可以使用。 -
没有 std::arrays 就没有办法吗?如果我使用普通的 struct a[MAX] 怎么办?
-
std::begin和std::end无论如何都可以工作。对于数组,迭代器将是一个指针。指针满足随机访问迭代器的要求。 -
@chris 以及如何告诉
std::find结构的哪个特定数据项用于比较?重载=运算符?返回值将包含什么?索引? -
如任何参考文献中所述,
std::findusesoperator==,或者您可以使用std::find_if。它返回一个迭代器(这里是指针)指向找到的元素或last。
标签: c++ algorithm data-structures stl structure