如何为内部列表支持基于范围的Statement? (c ++)

时间:2016-11-30 11:56:13

标签: c++ iterator stdlist

我们有一些广泛使用的类包装内部std :: list

template <class COLL_TYPE>
class OurColl
{
...
    private:
    std::list<COLL_TYPE> *m_pList;

我希望能够使用基于for循环的范围:

OurColl<int> listInts;
for ( int x : listInts )
{

}

这必须迭代底层的m_pList。

我觉得这个问题不同,因为它最接近Chris Redford在标记为重复的问题底部提供的答案。

此外,由于我在一个包含内部列表的模板的类中,因此有点麻烦。

1 个答案:

答案 0 :(得分:0)

这似乎有效:

  typename std::list<COLL_TYPE>::iterator begin()
   {
      return m_pList->begin();
   }
   typename std::list<COLL_TYPE>::iterator end()
   {
      return m_pList->end();
   }
   typename std::list<COLL_TYPE>::const_iterator begin() const
   {
      return m_pList->begin();
   }
   typename std::list<COLL_TYPE>::const_iterator end() const
   {
      return m_pList->end();
   }