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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
zhenya.ya
1 / 1 / 0
Регистрация: 29.11.2009
Сообщений: 305
#1

Удаление значения в std::list - C++

26.05.2011, 20:08. Просмотров 1444. Ответов 3
Метки нет (Все метки)

Имеем метод для удаления, где 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");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2011, 20:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление значения в std::list (C++):

Непосредственное удаление из std::list - C++
Собственно проблема вот в чем раньше, когда я создавал игру, у меня были самодельные листы типа struct List { T data; ...

Std::list удаление элемента во время цикла - C++
Добрый вечер, Как бы удалить элеммент без &quot;сбора итераторов&quot;. #include &lt;iostream&gt; #include &lt;list&gt; using namespace std; static...

Реализация std::list, сложность list::size() - C++
Часто приходилось пользоваться Listом, но сейчас столкнулся с небольшой неоднозначностью. Согласно документации, метод size() в 11...

Потокобезопасность std::map::end, std::list::end - C++
Собсна сабж, могу ли я без синхронизаций выполнять подобного рода код if (myIter != map.end()) // != list.end() {...} myIter =...

Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int') - C++
Есть такие строки: std::list&lt;c_bullet*&gt; Bullets; ... for(auto i = Bullets.begin(); i != Bullets.end(); /**/) В строке цикла вот...

Сортировка std::list - C++
Есть такой фрагмент програми. Создаю функцию для сортировки list. Вроде все правильно. В класе перегружены оператори &lt; i =. Не знаю что...

3
OstapBender
583 / 522 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
26.05.2011, 20:22 #2
просто coll.remove(value);
без цикла.
0
zhenya.ya
1 / 1 / 0
Регистрация: 29.11.2009
Сообщений: 305
26.05.2011, 21:22  [ТС] #3
просто coll.remove(value);
без цикла.
вот что выдается, если так сделать:
error C2664: std::list<_Ty>::remove: невозможно преобразовать параметр 1 из 'std::string' в 'const films &'
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
27.05.2011, 00:17 #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";
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2011, 00:17
Привет! Вот еще темы с ответами:

Вопросы по std::list - C++
1. Как обменять в списке два его элемента? Желательно большое быстродействие :) т.е. без удалить оба а потом добавить в другом порядке,...

Static std::list - C++
Добрый день, помогите решить проблему. &quot;Каждое статическое поле должно быть проинициализировано до main() явным образом&quot; - как я помню...

Вопрос по std::list - C++
Не произойдёт ли здесь какая-нибудь ошибка после удаления элемента из списка? std::list&lt;int&gt; myList; std::list&lt;int&gt;::iterator iter; ...

Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map? - C++
Здравствуйте. Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std map? Например: std::map...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
27.05.2011, 00:17
Ответ Создать тему
Опции темы

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