Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2014, 18:59   #1
Nickolay0512
Пользователь
 
Регистрация: 26.10.2013
Сообщений: 54
По умолчанию Использование List.

Здравствуйте. Я пишу программу работы со списком. Вывод и ввод работают без ошибок. Как реализовать удаление всех элемента с заданной датой? erase не работает, remove вызывает ошибку.
Вот мой код:
Код:
#include <iostream>
#include <iterator>
#include <string>
#include <list>
using namespace std;
class File
{
public:
	string name;
	string date;
	int count;
	File();
	File(const File &cp);
	File & File::operator =(const File &cp)
	{
		if (this == &cp)
			return *this;
		name = cp.name;
		date = cp.date;
		count = cp.count;
		return *this;
	}
	
};

File::File()
{
	name = "";
	date = "";
	count = 0;
}

File::File(const File &cp)
{
	name = cp.name;
	date = cp.date;
	count = cp.count;
}

int main()
{
	list<File> List;
	File F;
	int n = 100, count, N;
	while (n != 0)
	{
		cout << "-----------MainMenu--------------" << endl;
		cout << "1.Вывод каталога файлов." << endl;
		cout << "2.Ввод каталога файлов." << endl;
		cout << "3.Удаление файлов дата создания которых меньше заданой." << endl;
		cout << "4.Выборка файла с наибольшим количеством обращений." << endl;
		cout << "5.Форматирование каталога." << endl;
		cout << "0.Выход" << endl;
		cin >> n;
		system("cls");
		switch (n)
		{
		case 1:
		{
			list<File>::iterator it = List.begin();
			int i = 0;
			for (; it != List.end(); ++it) // движемся по списку
			{
				++i;
				cout << "Данные о файле номер " << i << endl;
				cout << (*it).name << endl; // выводим содержимое каждого элемента списка
				cout << (*it).date << endl;
				cout << (*it).count << endl;
				cout << "--------------------------------------------------------" << endl;
			}
			break;
		}
		case 2:
		{
			cout << "Введите количество файлов в каталоге: ";
			cin >> N;
			for (int i = 0; i < N; i++)
			{
				cout << "Введите информацию о файле номер " << i + 1 << endl;
				cout << "Введите имя файла: ";
				cin >> F.name;
				cout << "Введите дату создания файла: ";
				cin >> F.date;
				cout << "Введите Количество обращений к файлу: ";
				cin >> F.count;
				List.push_back(F);
			}
			break;
		}
		case 3:
		{
			string dat;
			list<File>::iterator it = List.begin();
			std::list<File>::iterator end = List.end();
			cout << "Введите дату создания: ";
			cin >> dat;
			for (; it != List.end(); it++) // движемся по списку
			{
				if ((*it).date == dat)
					List.remove(*it);
			}
			break;
		}

		}
	}

}
Nickolay0512 вне форума Ответить с цитированием
Старый 29.10.2014, 20:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
erase не работает, remove вызывает ошибку.
Да уж... Бенни Хилл, а Дитер Болен...
Ошибка то какая? Или ее текст настолько страшен что способен вызвать демонов?
Кста: http://www.cplusplus.com/reference/list/list/remove/
Соответственно нужно вводить туда значения, а не итератор.

Вот надыбал тут:http://www.cplusplus.com/reference/list/list/remove_if/
По мотивам мона писнуть так:
Код:
string dat;
bool ByDate (const File& value) { return value.date == dat; }
...
		case 3:
		{
			
			cout << "Введите дату создания: ";
			cin >> dat;
			List.remove_if (ByDate);
                        cout << "Удалено";
		break;
		}
I'm learning to live...

Последний раз редактировалось Stilet; 29.10.2014 в 21:09.
Stilet вне форума Ответить с цитированием
Старый 30.10.2014, 10:48   #3
Nickolay0512
Пользователь
 
Регистрация: 26.10.2013
Сообщений: 54
По умолчанию

Спасибо огромное. Заработало)
Nickolay0512 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
List Структура в List структуре и тд по аналогии с Delphi Кислый C# (си шарп) 3 13.09.2014 21:06
C# list bpystep Помощь студентам 1 29.04.2012 20:35
[c++][list] Порядок обработки двух list Padavan Помощь студентам 1 10.05.2011 14:56
Использование шаблона List(C++) Demonhunterus Помощь студентам 1 16.10.2010 16:20
List yurik1 Общие вопросы C/C++ 1 06.05.2008 16:34