gpt4 book ai didi

C++ 简单的迭代器实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:13:47 26 4
gpt4 key购买 nike

我有这样的数组:

template<class T> class F
{
...
bool isSet() { return set_; }
T& GetVal() { return val_; }

private:
T val_;
bool set_;
...
}

F<S1> arr1[10];

我正在寻找一个迭代器(或类似迭代器的类)来简化以下操作:

F<S1>* cur = arr1[0];
while(cur.IsSet())
{
S1* ptr = cur->GetVal();
// do something with ptr
cur++;
};

想要一些更简洁的东西,可以与不同类型的 S1、S2 等一起工作。

最佳答案

标准为数组提供了迭代器:

#include <iterator>

T arr[100];

for (auto it = std::begin(arr), end = std::end(arr); it != end; ++it)
{
foo(*it);
it->zap();
}

it 的类型将只是T *,但这为您提供了一个统一的接口(interface)。

术语“迭代器”实际上只是指一个概念,而不是任何特定的代码段。裸指针是完全合法的迭代器。重要的是 std::iterator_traits 给出了正确的类型定义,它为裸指针所做的。

关于C++ 简单的迭代器实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9318558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com