接受 array.begin() 和 array.end() 作为参数的 C++ 函数

互联网 行业动态 更新时间:2024-06-13 00:19:06

bol*_*lov 5

据我了解,开始/结束函数返回指向数组第一个/最后一个元素的指针

begin,并end返回迭代器。标准库与迭代器一起工作。迭代器是指针的泛化。

迭代器的行为类似于指针,您可以像使用指针一样使用它们(例如*it访问元素),但有一些警告:并非所有迭代器都具有指针所做的所有操作。指针满足随机访问迭代器的概念,因此在某些实现中,迭代器std::array可能只是指针类型的别名,但您不能依赖它。例如,在同一个编译器上,它可以是发布版本的指针,但可以是调试版本的完整类。

惯用的方法是这样写:

template<class It>
void foo(It begin, It end) {
     for (auto it = begin; it != end; ++it) {
          const auto& elem = *it;
          // ..
     }
}

从 C++20 开始,我们应该从迭代器对过渡到范围:

void foo(std::ranges::range const auto& r) {
    for (const auto& elem : r) { 
        // ...
    }
}

更多推荐

函数,参数,array

本文发布于:2023-04-20 20:36:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/hyzx/e86e55f7635db40a44f945d9430f112a.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   参数   array

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!