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

时间:2017-04-03 02:35:08

标签: c++ arrays iterator

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

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

1 个答案:

答案 0 :(得分:0)

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

如果您真的想编写自己的std::array版本,请将内部数据指针保存到静态分配的数组,将iterator类型设为T*,然后设为{{ 1}}和begin()分别返回指向end()成员数组的第一个元素和一个结尾的指针。

相关问题