我来自
Java世界,目前正在构建一个小型的c程序.
我有一个对象做一些工作,然后作为列表返回工作的结果.
我有一个对象做一些工作,然后作为列表返回工作的结果.
现在一天后,我改变了对象的行为,将结果保存在一个集合中,以避免在容器中重复.但是我不能简单地返回该集合,因为我第一次使用了一个接口的列表.
有没有一个常见的容器接口,我可以使用它来指定我的对象的接口,并忘记我在内部使用的容器类型?
目前,我正在创建一个添加所有值的集合,然后从集合创建列表:
- return std::list<foo>(this->mySet.begin(),this->mySet.end())
好像有点奇怪
解决方法
容器的概念由迭代器体现.
正如你已经看到硬编码一个特定类型的容器可能不是你想要的.所以让你的类返回迭代器.然后,您可以重新使用conatinator迭代器.
正如你已经看到硬编码一个特定类型的容器可能不是你想要的.所以让你的类返回迭代器.然后,您可以重新使用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中的任何其他容器.