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

Удаление элемента списка list.STL - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
17.08.2012, 17:13     Удаление элемента списка list.STL #1
Всем привет! Ребята, не могу понять почему у меня не получается удалить конкретный элемент списка.

Вот код
C++
1
2
3
4
5
6
7
8
void  WriteClientinFile( Client &client, int &position )
{
    list < Client > :: iterator iteratorclient;
    iteratorclient = listclient.begin() + position;
    listclient.erase( iteratorclient );
    listclient.push_back ( client );
    
}
Компилятор выдает такие ошибки

C++
1
Error   56  error C2676: binary '+' : 'std::_List_iterator<_Mylist>' does not define this operator or a conversion to a type acceptable to the predefined operator  c:\users\ноут\documents\visual studio 2010\projects\examwinapi\examwinapi\examwinapi.cpp    88  1   ExamWinApi
и
C++
1
Error   53  error C2784: 'std::_Array_const_iterator<_Ty,_Size> std::operator +(_Array_const_iterator<_Ty,_Size>::difference_type,std::_Array_const_iterator<_Ty,_Size>)' : could not deduce template argument for 'std::_Array_const_iterator<_Ty,_Size>' from 'int'   c:\users\ноут\documents\visual studio 2010\projects\examwinapi\examwinapi\examwinapi.cpp    88  1   ExamWinApi
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2012, 17:13     Удаление элемента списка list.STL
Посмотрите здесь:

удаление значения в STL list C++
c++ stl удаление елемента из list C++
stl, удаление элементов в list C++
C++ Удаление елемента списка с использованием итератора. STL
C++ Удаление list STL
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
17.08.2012, 17:19     Удаление элемента списка list.STL #2
А где вы создаёте список, из которого должен быть удалён элемент?
SubTerran
8 / 8 / 0
Регистрация: 13.08.2012
Сообщений: 18
17.08.2012, 17:22     Удаление элемента списка list.STL #3
List не поддерживает итераторы с произвольным доступом. Похоже ошибка в этом:
C++
1
iteratorclient = listclient.begin() + position;
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
17.08.2012, 17:30  [ТС]     Удаление элемента списка list.STL #4
Господа, я с вами согласен, однако в книге написано, что из list можно удалить из любого места. Как вариант в цикле передвинуть итератор с помощью ++, что коряво
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
17.08.2012, 17:30     Удаление элемента списка list.STL #5
listclient не понятно откуда взялся, если допустить что он глобальный то достаточно вызвать вместо оператора + функцию advance:
C++ (Qt)
1
2
3
4
5
6
7
8
9
void  WriteClientinFile( Client &client, int &position )
{
    list < Client > :: iterator iteratorclient;
    iteratorclient = listclient.begin();
    advance(iteratorclient, position);
    listclient.erase( iteratorclient );
    listclient.push_back ( client );
    
}
Дело в том, что список не расположен в непрерывной области памяти, как, например вектор. По этому поддержка оператора + как правило не реализуется. можно дойти до нужной позиции с помощью ++, а можно просто вызвать готовую функцию.
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
17.08.2012, 17:39  [ТС]     Удаление элемента списка list.STL #6
~OhMyGodSoLong~,
C++
1
list < Client > listclient;
Глобальный

Добавлено через 8 минут
Всем большое спасибо
Yandex
Объявления
17.08.2012, 17:39     Удаление элемента списка list.STL
Ответ Создать тему
Опции темы

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