2016-02-14 4 views
1

Я использую итератор в C++. Это так хорошо. Но я хочу иметь мой итератор в моем классе. Как это сделать?Как определить итератор в моем классе

простой пример

//a simple container 
class MyArray 
{ 
public: 
    MyArray() 
    { 
     for(int i=0;i<10;i++) 
      data[i] = 0; 
    } 

    int GetValue(int index) 
    { 
     if(index>=10 || index<0) 
      return -1; 
     else 
      return data[index]; 
    } 

    bool SetValue(int value, int index) 
    { 
     if(index>=10 || index<0) 
      return false; 
     data[index] = value; 
    } 

    int& operator[](int index) 
    { return data[index]; } 

    void ShowData(); 
protected: 
    int data[10]; 
private: 
}; 

// only test use 
void MyArray::ShowData() 
{ 
    std::cout<<"Data : "; 
    for(int i =0;i<10;i++) 
    { 
     std::cout<<data[i]<<" "; 
    } 
    std::cout<<std::endl; 
} 

int main() 
{ 
    MyArray array; 

    MyArray::iterator it = array.begin(); //how to implementation? 

    getchar(); 
    return 0; 
} 
+1

Возможный дубликат [Как правильно реализовать пользовательские итераторы и const \ _iterators?] (Http://stackoverflow.com/questions/3582608/how-to-correctly-implement-custom-iterators-and-consti-iterators) – Abhijeet

+1

Если вы хотите дешевый способ, указатель считается итератором произвольного доступа. Помимо случайной стандартной функции библиотеки, которая работает только с объектами итератора, вместо этого может использоваться указатель. –

ответ

0

стандарт C++ 11 определяет требования к итераторы в разделе 24 стандарта. Итак, короткий ответ здесь для вас, чтобы определить и реализовать свой класс iterator и const_iterator таким образом, который соответствует требованиям для итераторов.

Требования к итераторам занимают пять кратких страниц стандарта. Очевидно, что это не то, что можно суммировать в нескольких коротких параграфах в ответе stackoverflow.com.

Я предлагаю вам посетить библиотеку или книжный магазин, найти подробную книгу на C++, просмотреть ее и посмотреть, дает ли она хороший, существенный обзор итераторов и их требований. Затем попробуйте реализовать их самостоятельно.

Смежные вопросы