自定义未绑定数组的迭代器
Iterator for a custom unbound array
我实现了自己的小UnboundArray
class:
template <typename T>
class UnboundArray {
private:
std::vector<T> elementData;
public:
...
std::size_t size()
{
return elementData.size();
}
};
我有一个 class,我想在其中使用我的 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 与您的自定义 class UnboundArray
一起使用,您可以从为 begin()
和 end()
方法开始=13=]:
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); }
我实现了自己的小UnboundArray
class:
template <typename T>
class UnboundArray {
private:
std::vector<T> elementData;
public:
...
std::size_t size()
{
return elementData.size();
}
};
我有一个 class,我想在其中使用我的 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 与您的自定义 class UnboundArray
一起使用,您可以从为 begin()
和 end()
方法开始=13=]:
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); }