gpt4 book ai didi

c++ - C++ 中集合/容器的接口(interface)/父类(super class)

转载 作者:可可西里 更新时间:2023-11-01 15:38:24 24 4
gpt4 key购买 nike

我来自 Java 世界,目前正在构建一个小型 C++ 程序。我有一个对象可以做一些工作,然后将工作结果作为列表返回。

现在一天后,我更改了对象的行为以将结果保存在一个集合中以避免容器中出现重复。但是我不能简单地返回集合,因为我第一次使用列表作为接口(interface)。是否有一个通用的容器接口(interface),我可以使用它来指定我的对象的接口(interface)而忘记我在内部使用的容器类型?

目前我正在创建一个集合,添加所有值,然后从该集合创建一个列表:

return std::list<foo>(this->mySet.begin(), this->mySet.end())

好像有点奇怪。

最佳答案

容器的概念由迭代器体现。
正如您所见,硬编码特定类型的容器可能不是您想要的。所以让你的类返回迭代器。然后您可以重新使用 conatiners 迭代器。

class MyClass
{
private:
typedef std::list<int> Container;
public:
typedef Container::iterator iterator;
typedef Container::const_iterator const_iterator;


iterator begin() {return myData.begin();}
const_iterator begin() const {return myData.begin();}

iterator end() {return myData.end();}
const_iterator end() const {return myData.end();}

private:
Container myData;
};

现在,当您将 Container 类型从 std::list 更改为 std::set 时,没有人需要知道。
此外,通过使用其他容器使用的标准名称,您的类开始看起来像 STL 中的任何其他容器。

注意:返回 const_iterator 的方法应该是 const 方法。

关于c++ - C++ 中集合/容器的接口(interface)/父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1059824/

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