gpt4 book ai didi

c++ - 如何根据自定义逻辑将序列一一输出?

转载 作者:行者123 更新时间:2023-11-30 04:46:01 25 4
gpt4 key购买 nike

我有一个使用自定义逻辑生成一些序列的类:

class Example{
size_t FirstElement();
size_t NextElement(size_t currentelement);
//When element equals magic number this is
//signalling that the sequence is over.
static size_t MagicNumber =-1;
}

我可以按如下方式使用序列:

Example example{};
for(size_t curelement = example.FirstElement;
curelement != Example::MagicNumber;
curelement = example.NextElement(currentelement))
{
//do something with the curelement
}

我想要一个可以同样轻松地使用序列的解决方案,但是:

  • 避免在 Example 外部使用魔数(Magic Number)(即在消费时)。
  • 这不会将当前元素存储在“example”对象内部
  • 总的来说,消费代码可能更清晰一些?
  • 与这段代码相比,这不会带来实质性的性能损失。
  • 编辑:示例不应一次性返回整个序列,即作为 std::vector。

有没有好的选择。 (根据我对迭代器的(非常有限的)理解,他们应该是这里的goto解决方案?如果是,如何实现这样的解决方案?)

最佳答案

是的,我建议您使用迭代器。它们通常以相同的方式工作,例如您的代码:

Example e;
for(auto it = e.begin(); it != e.end(); ++it)
{...}

//Can be simplified to
for(const auto &x : e)
{...}

其中 begin() 将返回指向第一个元素的迭代器(如 Example::FirstElement()。和 end()最后一个元素之后的迭代器(这可能会返回你的魔数(Magic Number))。但是......这两个值都应该包装在一个类中,你不应该只返回整数作为迭代器。

为了进一步阅读,我建议 thisthis发布。

关于c++ - 如何根据自定义逻辑将序列一一输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57002679/

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