我实现了自己的小UnboundArray
类:
template <typename T>
class UnboundArray {
private:
std::vector<T> elementData;
public:
...
std::size_t size()
{
return elementData.size();
}
};
我有一个课程,我想要使用UnboundArray
,特别是我需要在UnboundArray
元素上使用for循环:
for (auto const &row : unbound_arrays) {
// loop over unbound array of unbound arrays and call its size method or something else
}
我是C ++迭代器的新手,不知道应该遵循的路径。我应该从头开始实现我的迭代器,还是应该在UnboundArray
std::iterator
中创建一个{{1}}类型的成员?
答案 0 :(得分:4)
如果您最需要在自定义类UnboundArray
中使用range based for loop,则可以从为begin()
实施end()
和UnboundArray
方法开始:< / p>
auto begin() { return std::begin(elementData); }
auto end() { return std::end(elementData); }
所以循环工作:
UnboundArray<int> unbound_array;
for (auto const &elem: unbound_array) { // ... }
请务必注意,您需要const
重载才能遍历const
UnboundArray
:
auto begin() const { return std::cbegin(elementData); }
auto end() const { return std::cend(elementData); }