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

удаление значения в STL list - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
zhenya.ya
1 / 1 / 0
Регистрация: 29.11.2009
Сообщений: 304
26.05.2011, 20:08     удаление значения в STL list #1
Имеем метод для удаления, где value - предов. значение, а list<films> coll - копия др. списка(который уже наполнен данными).

Проблема: как запихнить значение value в вызов coll.remove(). ( понятно, что value - тип стринг, а в coll.remove() можно вставлять тип films).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void films::delete_value(string value, list<films> coll)
{
    list<films>::iterator iter;
 
    for(iter=coll.begin();iter!=coll.end();++iter)
    {
                          coll.remove( ??????????? );   // 
 
        (*iter).print();
        cout<<"\n";
    }
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2011, 20:08     удаление значения в STL list
Посмотрите здесь:

c++ stl удаление елемента из list C++
C++ Удаление элемента списка list.STL
stl, удаление элементов в list C++
C++ STL list
List STL C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
26.05.2011, 20:22     удаление значения в STL list #2
просто coll.remove(value);
без цикла.
zhenya.ya
1 / 1 / 0
Регистрация: 29.11.2009
Сообщений: 304
26.05.2011, 21:22  [ТС]     удаление значения в STL list #3
просто coll.remove(value);
без цикла.
вот что выдается, если так сделать:
error C2664: std::list<_Ty>::remove: невозможно преобразовать параметр 1 из 'std::string' в 'const films &'
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
27.05.2011, 00:17     удаление значения в STL list #4
Не очень понятно, что вы хотите сделать, но можно воспользоваться предикатом и методом remove_if. Вместо класса предикат может быть функцией, возвращающей bool и принимающей string и films.
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct SearchByValue {
  SearchByValue(const std::string &value_) : value(value_) {}
  bool operator()(const films &film) {
    return film.value == value;
  }
  std::string value;
};
 
..
  std::list<films> flms;
...
  flms.remove_if(SearchByValue("something")); // удалит все films с полем value == "something";
Yandex
Объявления
27.05.2011, 00:17     удаление значения в STL list
Ответ Создать тему
Опции темы

Текущее время: 14:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru