自定义未绑定数组的迭代器

时间:2018-02-03 12:02:20

标签: c++ stl iterator std

我实现了自己的小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}}类型的成员?

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) { // ... }

wandbox example

请务必注意,您需要const重载才能遍历const UnboundArray

auto begin() const { return std::cbegin(elementData); }
auto end() const { return std::cend(elementData); }