gpt4 book ai didi

c++ - Yield 从 C# 到 C++,处理容器

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

实际上,我在这里有一个设计问题。它非常简单,但重点是:

我有一个 C++ 类,它有一个声明为私有(private)成员的 STL vector 。但是那个类的客户需要遍历这个 vector 。

在 C# 中,我们有一个非常方便的语句,即 Yield,在这种情况下,您可以编写一个返回 IEnumerable 的函数,它“让”您以一种很好的方式迭代该类中的私有(private)容器。

我只是想为 C++ 找到一个优雅的解决方案,而不是使用像 GetValue(int idx) 这样的方法。

有什么建议吗?

例子:

class Fat
{
public:
Fat();
// some code here ...

private:
void LoadSectors(SECT startPoint);
std::vector<SECT>sectors;

};

class Storage
{
public:
Storage(string CompoundFile);

//For example, this method will receive a ref to my fat system and iterate over
//the fat array in order to read every sector.
LoadStrem(Fat& fat);

};

这是非常简单的示例。

最佳答案

C++ 中没有类似于 C# 中的 yield 的语法糖。如果你想创建一个类,它的实例应该像普通的 STL 集合一样可迭代,那么你必须为你的类实现一个迭代器,在你的类型上将它公开为 ::iterator ,并提供begin()end()成员函数。

关于c++ - Yield 从 C# 到 C++,处理容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821988/

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