我实现了自己的小型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
类型的成员? 最佳答案
如果您最需要在自定义类UnboundArray
中使用range based for loop,则可以从为begin()
实现end()
和UnboundArray
方法开始:
auto begin() { return std::begin(elementData); }
auto end() { return std::end(elementData); }
因此循环有效:
UnboundArray<int> unbound_array;
for (auto const &elem: unbound_array) { // ... }
wandbox example
重要的是要注意,您需要
const
重载才能遍历const
UnboundArray
:auto begin() const { return std::cbegin(elementData); }
auto end() const { return std::cend(elementData); }