Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаление из списка 
:(
    Опции темы
zhenya1
Дата 27.5.2011, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.9.2010

Репутация: нет
Всего: нет



Дано: информационная система кинотеатра.

Есть метод удаления, в котором value - введенная ,скажем, из  main строка , а list<films> coll  - список, содержащий имя фильма и др. поля. Проверяю: если введенная строка и имеющаяся в списке совподают - хочу удалить такую из списка.

Проблема: как возможно ее удалить?

Код

void films::delete_value(string value, list<films> coll)
{
list<films>::iterator iter;
for(iter=coll.begin();iter!=coll.end();++iter)
    {
        if(value==(*iter).film_name)
        {
            coll.remove(     ); /// ???
        }

}
system("pause");
}

PM MAIL   Вверх
boostcoder
Дата 27.5.2011, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Код

void films::delete_value(string value, list<films> coll)
{
list<films>::iterator iter;
for(iter=coll.begin();iter!=coll.end();++iter)
    {
        if(value==(*iter).film_name)
        {
            coll.erase(iter);
        }
}
system("pause");
}


или посмотрите: http://cplusplus.com/reference/stl/list/remove_if/
PM WWW   Вверх
borisbn
Дата 27.5.2011, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



zhenya1, вот только не очень понятен смысл ф-ции
Код
void films::delete_value(string value, list<films> coll)

если она член класса, то зачем ей передаётся какой-то coll ?
почему в классе films есть ф-ция удаления из списка films'ов ?
и потом, coll передаётся не по ссылке, а по значению, т.е. копия. После удаления из него (из копии) данные из списка, который был передан ф-ции в качестве параметра, удалены не будут...



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
zhenya1
Дата 27.5.2011, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.9.2010

Репутация: нет
Всего: нет



Цитата

если она член класса, то зачем ей передаётся какой-то coll ?


У меня в программе как можно больше от С++ должно быть. Это для демонстрации копирования.

Цитата

почему в классе films есть ф-ция удаления из списка films'ов ?

Хм... а куда рациональнее было бы реализовать?
PM MAIL   Вверх
borisbn
Дата 27.5.2011, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(zhenya1 @  27.5.2011,  16:37 Найти цитируемый пост)
а куда рациональнее было бы реализовать?

ну... я задачи то не знаю... но, насколько я понял, films (кстати, почему во множественном числе???) описывает один фильм, а list<films> - список этих фильмов.
в общем, выкладывай код, только не весь проект, а проблемную часть... посмотрим... посоветуем 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
zhenya1
Дата 27.5.2011, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.9.2010

Репутация: нет
Всего: нет



Я тут поразмыслил и понял ,что все дело в этом:
Цитата

и потом, coll передаётся не по ссылке, а по значению, т.е. копия. После удаления из него (из копии) данные из списка, который был передан ф-ции в качестве параметра, удалены не будут...


Как бы сделать так, чтобы в метод пошла истинная коллекция ?

На данный момент расположение  такое:
Код

class films
{
public:
    string film_name;     //намеренно в public
private:
  //....
public:
    films(string film_name2, //....и т.д.)
    {
        film_name = film_name2;
        //..... и т.д.
                }
    //....
    void delete_value(string value, list<films> coll);
    
};

...
main()
{
...
list<films> obj(n,films(f_name,...);
...
case 'A':
cout<<: input value:"<<endl;
ob.delete_value(value,obj);

...


 
PM MAIL   Вверх
borisbn
Дата 27.5.2011, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



void delete_value(string value, list<films> & coll);

И всё равно не понимаю, зачем в классе "один фильм" ф-ция удаления из некого списка фильмов какого-то одного фильма по имени, при чём не имеющего отношения к этому классу/экземпляру???


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
zhenya1
Дата 27.5.2011, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.9.2010

Репутация: нет
Всего: нет



а вообще, да, Вы наверно правы. Как-то нелогично получается...надо будет подумать
Огромное вам спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0490 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.