استفاده ازRanged based for برای کلاس - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

استفاده ازRanged based for برای کلاس

+1 امتیاز

سلام.

من کلاسی را به صورت زیر دارم چطور این کلاس را تعریف کنم که بشه به صورت ranged base for از این کلاس استفاده کرد؟

class foo{
public:
private:
  vector<int> list;
};

قصد دارم به صورت زیر از کلاس foo استفاده کنم.

foo test;
for (auto a : test)
  cout << a << endl;

 

سوال شده بهمن 16, 1393  بوسیله ی Xavi (امتیاز 627)   24 83 110
دوباره تگ گذاری شد بهمن 16, 1393 بوسیله ی BlueBlade

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

باید 2 تابع begin , end که iterator بر می گردونن را هم بنویسید .

#include <iostream>
#include <algorithm>
#include <vector>

class Foo{
public:
  std::vector<int>::iterator begin(){
     return list.begin();   
  }
  std::vector<int>::iterator end(){
     return list.end();   
  }
  
private:
  std::vector<int> list={1,2,3,4};
};
int main(){
    Foo foo;
    for(auto i:foo) 
      std::cout<<i<<'\n';
}

 

پاسخ داده شده بهمن 16, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد بهمن 16, 1393 بوسیله ی Xavi
...