我有一个包含1D双数组的类,我希望为迭代器提供begin()和end()方法,而无需编写其他类。但是,我不确定begin()和end()的返回类型是什么。我的直觉告诉我,我可以简单地返回一个double *类型,因为它是double数组的地址,但是我必须通过std :: iterator实现它以符合STL吗?
template <size_t size>
double * ContainerClass<size>::end(){
return std::end(mContainer);
}
答案 0 :(得分:0)
使用std::array<double, size>
,而不是重新发明轮子或在内部存储数据。
如果您真的想编写自己的std::array
版本,请将内部数据指针保存到静态分配的数组,将iterator
类型设为T*
,然后设为{{ 1}}和begin()
分别返回指向end()
成员数组的第一个元素和一个结尾的指针。