14 / 0 / 1
Регистрация: 17.06.2014
Сообщений: 15
1

Передвинуть элементы в массиве указателей на объекты fstream

17.06.2014, 01:37. Показов 1025. Ответов 10
Метки нет (Все метки)

Здравствуйте. Есть прога в которой одновременно надо обрабатывать до 10 файлов. Для этого создан массив указателей на fstream. Проблема такая: при закрытии, например 4-го файла, надо в массиве указателей на файлы сдвинуть элементы к началу массива, начиная с 4 позиции. То есть:
C
1
2
3
4
5
6
fstream fList[10]; //массив указателей на файлы
 
...........................
 
for (int i = 4; i < 10; i++)
      fList[i] = flist[i + 1];
В классе fstream не определен оператор присваивания, так что такой вариант не работает.
Как правильно реализовать этот кусок кода?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2014, 01:37
Ответы с готовыми решениями:

Почему в сортировке указателей на объекты в вызове функции используются адреса объектов, а не указателей?
Доброго времени суток! Рассматриваю пример (из Лафоре) сортировки массива указателей на объекты,...

Проверить, есть ли в массиве указателей элементы, указывающие на равные числа
Объявить одномерный динамический массив из n элементов типа указатель на int (n вводится с...

Как записать в файл данные, используя объекты fstream?
Самый простой способ реализации, пожалуйста. К примеру, что надо изменить в этой части кода,...

Массив указателей на объекты
Доброго времени суток. В моем коде базовый класс имеет два наследника. Четвертый класс содержит...

10
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2014, 01:43 2
Цитата Сообщение от snowleo Посмотреть сообщение
Для этого создан массив указателей на fstream.
И где он? Вот это не массив указателей:
Цитата Сообщение от snowleo Посмотреть сообщение
fstream fList[10];
0
14 / 0 / 1
Регистрация: 17.06.2014
Сообщений: 15
17.06.2014, 01:54  [ТС] 3
То есть надо использовать:
C
1
fstream *fList = new fstream[10];
или же:
C
1
fstream **fList = new fstream*[10];
Какой из вариантов?
0
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2014, 01:59 4
Цитата Сообщение от snowleo Посмотреть сообщение
То есть надо использовать:
fstream *fList = new fstream[10];
Это то же самое (не массив указателей), но в динамической памяти.

Добавлено через 2 минуты
Цитата Сообщение от snowleo Посмотреть сообщение
или же:
Можно так, можно сяк:
C++
1
fstream* fList[10];
0
14 / 0 / 1
Регистрация: 17.06.2014
Сообщений: 15
17.06.2014, 02:07  [ТС] 5
Ок. Подскажите, как дальше пользоваться этой конструкцией для работы с файлами?
Что-то типа:
C
1
2
3
4
5
6
7
fstream **fList = new fstream*[10];
 
//открытие файла
fList[0]->open("1.txt");
 
//вывод в файл
*fList[0]<<"test";
0
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2014, 02:13 6
Цитата Сообщение от snowleo Посмотреть сообщение
как дальше пользоваться этой конструкцией для работы с файлами?
...
Цитата Сообщение от snowleo Посмотреть сообщение
Что-то типа:
0
14 / 0 / 1
Регистрация: 17.06.2014
Сообщений: 15
17.06.2014, 02:21  [ТС] 7
Ладно. Основной вопрос был-как передвинуть элементы в массиве?
C
1
2
3
4
for (int j = 4; j < 10; j++)
{
     fList[j] = fList[j + 1];
}
Такой вариант, на сколько я понял, не верен. Так как же правильно?
0
2753 / 1908 / 568
Регистрация: 05.06.2014
Сообщений: 5,559
17.06.2014, 02:24 8
Лучший ответ Сообщение было отмечено snowleo как решение

Решение

Правильно - использовать std::vector и вызывать метод erase. Или std::move, если уж вектор не по нраву.
1
14 / 0 / 1
Регистрация: 17.06.2014
Сообщений: 15
17.06.2014, 02:31  [ТС] 9
Смысл в том, чтобы сохранить порядок следования файлов, так как индекс связан с другим списком, в котором после удаления элемента из середины, остальные элементы сдвигаются к началу, занимая освободившееся место.
0
2753 / 1908 / 568
Регистрация: 05.06.2014
Сообщений: 5,559
17.06.2014, 02:34 10
И? erase/std::move по вашему порядок следования как-то меняет?
1
14 / 0 / 1
Регистрация: 17.06.2014
Сообщений: 15
17.06.2014, 02:38  [ТС] 11
Renji, все понял. Большое спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2014, 02:38
Помогаю со студенческими работами здесь

Динамический массив указателей на объекты
вообщем была тут на форуме задача, в подробности вдаваться не буду, смысл сейчас заключается в том,...

Массив указателей на объекты подклассов
Доброго времени суток всем!!! Проф задал написать парсер простых математических выражений с...

Вектор указателей на объекты класса
Добрый вечер! Есть базовый класс Place от него наследуется класс City. Мне нужно реализовать...

Динамический массив указателей на объекты класса
Добрый вечер! Нужна помощь У меня имеется класс STROKA(вроде уже готовый,и все хорошо) Только...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru