Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Merovingean
3 / 3 / 0
Регистрация: 14.12.2013
Сообщений: 67
#1

Хранение ссылок на файловые потоки - C++

10.07.2015, 18:30. Просмотров 247. Ответов 4
Метки нет (Все метки)

Добрый вечер.

Столкнулся с ошибкой C2280 - невозможность использовать конструктор копирования для ifstream.

Пытаюсь заполнить приоритетную очередь парами вида <std::string, std::ifstream&>, но при добавлении в очередь нового элемента возникает ошибка (строка 12). Не могу понять, почему, ведь в контейнер должна помещаться ссылка, а не объект.

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    std::vector<std::ifstream> fileStreams;
 
    using UUIDAndStream = std::pair<std::string, std::ifstream&>;
    using UUIDContainer = std::vector<UUIDAndStream>;
    std::priority_queue<UUIDAndStream, UUIDContainer, UUIDComparator> UUIDQueue;
 
    std::string UUIDbuf;
 
    for (auto &stream : fileStreams)
    {
        stream >> UUIDbuf;
        UUIDQueue.push(std::make_pair(UUIDbuf, stream));
    }


Подскажите, пожалуйста, как можно выкрутиться из данной ситуации?
Пытался использовать std::reference_wrapper, но ничего хорошего не вышло.

Добавлено через 13 часов 33 минуты
Ну, конечно, есть более простой вариант с хранением в очереди индекса потока в векторе fileStreams. Но, может быть, есть более умный путь.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2015, 18:30     Хранение ссылок на файловые потоки
Посмотрите здесь:

Файловые потоки - C++
Компилятор ругается при создании экземпляра класса ofstream. Среда разработки - Visual C++ 2008. Выдает error C2079: 'fileout' uses...

Бинарные файловые потоки - C++
Существует ли стандартный вариант? Как обозван тип такого потока для записи? Для чтения? Чтоб бинарники писать операторами типа so&lt;&lt;d; (so...

Бинарные файловые потоки - C++
Нужно написать две функции, одна из них сохраняет перечень в бинарный файл, другая считает данные из этого же бинарного файла. Читал про...

файловые и строчные потоки (комментарии) - C++
Помогите с коментами к даной программе. Задание: Написать программу, которая считывает текст из файла и определяет, сколько в нем слов,...

Решение задач на файловые потоки - C++
1). Дан файл, в котором в каждой строке записана фамилия имя и отчество человека. В конце файла в отдельной строке указаны имена...

Файловые потоки, считывание сначала - C++
Есть проблема. Функцию recording вызываю несколько раз. В первый раз она считывает информацию, пока не конец файла, а во второй раз ничего...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
10.07.2015, 21:12     Хранение ссылок на файловые потоки #2
Почему не использовать указатель вместо ссылки?
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,931
Завершенные тесты: 1
10.07.2015, 21:30     Хранение ссылок на файловые потоки #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ох, опасное это дело, хранить указатели на элементы вектора. Одна реаллокация - и бум!
К ссылкам, кстати, это тоже относится.
P.S. Для любителей риска: загвоздка в вызове make_pair. Надо было использовать std::ref на stream или вызывать конструктор pair явно.
Merovingean
3 / 3 / 0
Регистрация: 14.12.2013
Сообщений: 67
11.07.2015, 17:20  [ТС]     Хранение ссылок на файловые потоки #4
Спасибо. Думаю, тогда лучше остановиться на индексах. Так безопаснее.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2015, 17:56     Хранение ссылок на файловые потоки
Еще ссылки по теме:

удаление записи, файловые потоки - C++
Нужно удалить не весь файл, а только его часть. Например в блокноте записано вот это : /*Герберт 23 мужской 3 9 9 7 Семенов ...

файловые потоки, пробел как ноль - C++
Сейчас объясню суть задачи, но мне не нужно полное решение, я придумал алгоритм, но не могу разобраться в одной мелочи. У меня в файле...

Файловые потоки и кириллица в имени файла - C++
существует следующая проблема, возможно ранее обсуждалась, но поиск по форуму результатов не принес: ... std::ofstream file(...

Файловые потоки. Подскажите, где ошибка - C++
Добрый день! Помогите разобраться, плиз: суть задачи в подсчете количества ненулевых элементов в заранее заготовленном файле. Вот что я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
11.07.2015, 17:56     Хранение ссылок на файловые потоки #5
Цитата Сообщение от Merovingean Посмотреть сообщение
Спасибо. Думаю, тогда лучше остановиться на индексах. Так безопаснее.
Думаю стоит пересмотреть алгоритм. Более чем уверен что можно сделать проще.
Yandex
Объявления
11.07.2015, 17:56     Хранение ссылок на файловые потоки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru