我实现了自己的小型 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
的成员?
最佳答案
如果您主要需要使用 range based for loop对于自定义类 UnboundArray
,您可以从为 UnboundArray
实现 begin()
和 end()
方法开始:
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); }
关于c++ - 自定义未绑定(bind)数组的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48597135/