如何使用std::binary_search或std::sort对结构体数组进行排序
How to sort an array of structs with std::binary_search or std::sort
我有一个排序的结构数组。我想用std::binary_search
或std::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::begin
和std::end
调用T类型数组返回T*。因此,当考虑数组上的InputIt
和OutputIt
函数时,您总是可以用T*代替它们。std::find
返回一个input。你得到的是一个指向相应数组元素的指针。如果没有找到,则返回last
。
相关文章:
- 初始化具有非默认构造函数的std::数组项的更好方法
- 输入std::数组时出现问题
- 缓存std::数组的选定元素,并在c++中自动保持其一致性
- C++如何生成std::数组列表
- 捕获lambda中的std::数组
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- std::数组边界检查如何工作?
- 通过unique_ptr访问std::数组
- 初始化 std::数组 of Eigen::Map
- 传递 std::数组变量作为参数
- 在带有模板的函数中传递未知大小的 std::数组.如何更正此代码?
- 如何将 std::find() 与 2d std: 数组一起使用?
- std::数组派生类聚合初始化
- 在std::数组内部使用时,无法从std::函数构造类
- 使用从1到N的数字初始化std数组模板参数
- 正在声明多维std::数组
- 使用std::index_sequence对std::数组初始化进行包扩展
- 使用 std::type T 的数组来构造可从 T 构造的 std::数组
- 从 std::数组创建十六进制代表
- 使用默认值初始化 std::数组