2010-04-02 3 views
0
explicit list(
    const A& Al = A() 
); 
explicit list(
    size_type n, 
    const T& v = T(), 
    const A& Al = A() 
); 
list(
    const list& x 
); 
list(
    const_iterator First, 
    const_iterator Last, 
    const A& Al = A() 
); 
+2

этот код печатает каждую запись по очереди - вам нужен только внутренний контур (без count pm100

+1

Я не понимаю цели вашего редактирования. Не могли бы вы уточнить? – ZoogieZork

ответ

0

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

+0

Он реализует случайный доступ в определенном смысле, но использует его только для доступа к элементам в последовательности. – Potatoswatter

0

Я действительно не могу сказать, что это пытается сделать, но у вас есть возможный Segfault во внутреннем цикле:

for (cursor = head_ptr; cursor !=NULL ||count<i; cursor=cursor->link()) 
{ 
count++;  
} 

Ваше условие завершения указывает на то, что если count < i, вы бы держать зацикливание даже если cursor == NULL ; когда выполняется cursor=cursor->link(), вы попытаетесь разыменовать NULL.

Возможно, вы имели в виду cursor !=NULL && count<i?

1
#include <list> 
using namespace std; 

list<Node> my_list; 

int index = 0; 
for (list<Node>::iterator cursor = my_list.begin(); 
    it!= my_list.end(); ++ cursor, ++ index) { 
    cout << "index: " << index << “ value: “ << cursor->data() << endl; 
}