2017-04-03 23 views
0

我有一個類,其中包含一個一維雙數組,我希望爲迭代器提供begin()和end()方法而無需編寫額外的類。但是,我不確定begin()和end()的返回類型是什麼。我的直覺告訴我,我可以簡單地返回一個double *類型,因爲它是一個double數組的地址,但是我必須通過std :: iterator來實現它以符合STL嗎?如何爲由數組支持的模板類定義begin()和end()?

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

你說得對,任何'T *'都爲你實現了'iterator'(特別是隨機訪問迭代器)。 –

+0

不可能在沒有看到類定義的情況下回答。 –

+0

'std :: iterator'不推薦順便說一句。你可以看一下'std :: array'作爲實現一維數組的東西的例子。 – chris

回答

0

使用std::array<double, size>,無論是不是重新發明輪子或者在內部存儲數據。

如果你真的想編寫自己的std::array版本,保持內部數據指針指向一個靜態分配的數組,讓你iterator類型T*,使begin()end()返回指向第一個元素,一個過去分別是private成員數組的末尾。

相關問題