【问题标题】:Why we use pointer to integer for max stl function instead for size_t data type(which is generally use) for array of characters in c++?为什么我们将指向整数的指针用于 max stl 函数而不是 size_t 数据类型(通常使用)用于 c++ 中的字符数组?
【发布时间】:2020-10-08 08:41:45
【问题描述】:

我正在解决一个问题,需要找到最大字符(按字母顺序或我们可以根据 ASCII 值说),发现 size_t 数据类型不能用于从算法头文件中定义的 max 函数返回我找到了指向整数的指针。

下面是我有疑问的一段代码:

int v[] = { 'a', 'c', 'k', 'd', 'e', 'f', 'h' };

int* i1; 

i1 = std::max_element(v, v + 4); 

谁能解释一下为什么?在此先感谢:-)

【问题讨论】:

  • max_element 将迭代器返回到给定范围内的元素,而不是索引。在数组的情况下,这些迭代器是指针。
  • 不要试图通过猜测来找出 c++ 是如何工作的,而是参考一些参考资料:en.cppreference.com/w/cpp/algorithm/max_element

标签: c++ algorithm pointers stl size-t


【解决方案1】:

因为 std::max_element 不仅是数组的函数。它是一个适用于任何迭代器的函数。并且索引仅对随机访问容器有意义,因此使用索引作为返回值将不必要地限制算法的接口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多