как записать содержимое связанного списка в файл - PullRequest
0 голосов
/ 02 мая 2011

У меня есть функция записи, которую я использую для записи содержимого списка в файл. Список содержит только цифры.

list<int>::iterator pos;
    for (pos = listStorage.begin(); pos != listStorage.end(); ++pos)
    {
        out << *pos << endl;
    }
    return out;

Я получаю ошибку при компиляции;

ошибка C2679: двоичный файл '=': не найден оператор, который принимает правый операнд типа 'std :: list <_Ty> :: _ Const_iterator <_Secure_validation>' (или нет приемлемого преобразования)

Кто-нибудь может помочь? Спасибо

Ответы [ 3 ]

2 голосов
/ 02 мая 2011

Вместо явного цикла я бы использовал алгоритм:

std::copy(listStorage.cbegin(), listStorage.cend(),
          std::ostream_iterator<int>(out, "\n"));

Это, вероятно, предотвратит проблему, с которой вы столкнулись, и случайно очистит код и почти наверняка будет работать быстрее (хотя ускорение с использованием "\n" вместо endl).

2 голосов
/ 02 мая 2011

Я вполне уверен, что это постоянная проблема.Ваш объект listStorage объявлен как const?Если это так, вам нужно объявить свой итератор как

const list<int>::iterator pos;
0 голосов
/ 03 мая 2011

Вы можете проверить это:

http://www.daniweb.com/software-development/cpp/threads/179828

В ней обсуждается та же проблема, что и у вас.

...