加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c / c中的集合/容器的接口/超类

发布时间:2020-12-16 03:22:28 所属栏目:百科 来源:网络整理
导读:我来自 Java世界,目前正在构建一个小型的c程序. 我有一个对象做一些工作,然后作为列表返回工作的结果. 现在一天后,我改变了对象的行为,将结果保存在一个集合中,以避免在容器中重复.但是我不能简单地返回该集合,因为我第一次使用了一个接口的列表. 有没有一个
我来自 Java世界,目前正在构建一个小型的c程序.
我有一个对象做一些工作,然后作为列表返回工作的结果.

现在一天后,我改变了对象的行为,将结果保存在一个集合中,以避免在容器中重复.但是我不能简单地返回该集合,因为我第一次使用了一个接口的列表.
有没有一个常见的容器接口,我可以使用它来指定我的对象的接口,并忘记我在内部使用的容器类型?

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

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

好像有点奇怪

解决方法

容器的概念由迭代器体现.
正如你已经看到硬编码一个特定类型的容器可能不是你想要的.所以让你的类返回迭代器.然后,您可以重新使用conatinator迭代器.
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;
};

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

注意:返回一个const_iterator的方法应该是一个const方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读