Распечатка списка указателей - PullRequest
1 голос
/ 12 февраля 2012

В настоящее время я создал список указателей, которые указывают на каждый 5-й элемент другого списка целых. Я пытаюсь распечатать этот список указателей, чтобы убедиться, что он указывает на правильные элементы другого списка.

Я пробовал разные способы сделать это, но ни один из них, похоже, не работает.

for (int* t = pointersList.begin(); t != pointersList.end(); ++t)
{
   cout << *t << endl;
}

или

for (int i = 0; i < pointersList.size(); ++i)
{
   int* itr;
   itr = pointersList.begin()+i;
   cout << *itr;
}

Я также пытался получить к нему доступ как к вектору (cout << pointersList[i];), но, похоже, ничего из этого не работает.

Я понимаю, что указатель указывает на ячейку памяти элемента (и именно здесь я использую *), но я никогда не знаю, когда мне нужно использовать & или даже &*.

Ответы [ 3 ]

3 голосов
/ 12 февраля 2012

Если вы используете стандартный контейнер библиотеки или контейнер с аналогичным интерфейсом, то begin() и end() возвращают итераторы, а не int *. В большинстве случаев код не должен компилироваться.

1 голос
/ 12 февраля 2012

Сделайте следующее. Это должно работать. Это позволит вам распечатать ваши значения ваших указателей. Надеюсь, это то, что вы искали.

for(int a = 0; a < pointersList.size(); a ++)
   {
    std::list<int*>::iterator i = pointersList.begin();

    advance(i, a);
    int* totry = *i;
    cout << *totry;
    cout << ",";
    }
0 голосов
/ 12 февраля 2012

У вас здесь серьезная проблема.Я просто даю вам подсказку, надеясь, что вы найдете ответ через 10 минут самостоятельно.

В первом цикле for вы увеличиваете сам указатель вместо списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...