如何为数组支持的模板类定义 begin() 和 end()

How to define begin() and end() for a template class backed by an array?

本文关键字:定义 begin end 数组 支持      更新时间:2023-10-16

我有一个包含一维双数组的类,我希望为迭代器提供begin((和end((方法,而无需编写额外的类。但是,我不确定 begin(( 和 end(( 的返回类型是什么。我的直觉告诉我,我可以简单地返回一种双 * 类型,因为它是双数组的地址,但我是否必须通过 std::itrator 实现它才能符合 STL?

template <size_t size>
double * ContainerClass<size>::end(){
    return std::end(mContainer);
}

使用 std::array<double, size> ,而不是重新发明轮子或在内部存储数据。

如果你真的想编写自己的std::array版本,请保留一个指向静态分配数组的内部数据指针,使iterator类型为T*,并分别begin()end()返回指向private成员数组的第一个元素和末尾的指针。