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
发布评论