C ++ программирование, Iterator является указателем, даже если он не объявлен указателем

0

Рассмотрим следующие строки

std::map<char,int> mymap;
std::map<char,int>::iterator it; /* not std::map<char,int>::iterator *it; */

Во второй строке даже считалось, что он не объявлен как указатель, как к элементам обращаются с помощью оператора стрелки (->), как показано ниже.

std::cout << it->first << " => " << it->second << '\n';
  • 0
    Точно так же вы можете использовать << с перегрузкой оператора std::cout :.
  • 0
    Вот как должны работать итераторы, как указатели, даже если они не указатели.
Теги:
class
pointers

1 ответ

4
Лучший ответ

Вы можете перегрузить -> оператор для своего класса, и это точно, что здесь происходит.

Другой пример:

class Hello
{
public:
    void Show()
    {
        printf("Hello, world!");
    }
};

class MyClass
{
private:
    Hello hello;

public:

    Hello * operator -> ()
    {
        return &hello;
    }
};


int main(int argc, char * argv[])
{
    MyClass m;

    m->Show();
}
  • 0
    Таким образом, с помощью оператора точка (.) Будет работать std :: cout << it.first << "=>" << it.second << '\ n';
  • 0
    @Dinesh Почему бы тебе просто не попробовать?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню