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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
#1

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

17.08.2012, 17:13. Просмотров 1327. Ответов 5
Метки нет (Все метки)

Всем привет! Ребята, не могу понять почему у меня не получается удалить конкретный элемент списка.

Вот код
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
Посмотрите здесь:

Удаление list STL - C++
Из списка, содержащего 100 тыс. элементов, удалить все элементы путем многократного удаления элемента из случайной позиции. Случайная...

Удаление значения в std::list - C++
Имеем метод для удаления, где value - предов. значение, а list&lt;films&gt; coll - копия др. списка(который уже наполнен данными). ...

stl, удаление элементов в list - C++
Всем доброго времени суток! прошу помочь в решении задачи: Из числовой последовательности найти удалить все элементы, лежащие в...

c++ stl удаление елемента из list - C++
for(std::list&lt;gun&gt;::iterator iter = Gun.begin(); iter != Gun.end(); iter++) { iter-&gt;controle(); if(iter-&gt;getlife() == 0) ...

Удаление елемента списка с использованием итератора. STL - C++
Надо удалить из списка елементы, значение которых входит в некий диапазон. Я хочу использовать для етого итератор(если такое вообще...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 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
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 );
    
}
Дело в том, что список не расположен в непрерывной области памяти, как, например вектор. По этому поддержка оператора + как правило не реализуется. можно дойти до нужной позиции с помощью ++, а можно просто вызвать готовую функцию.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2012, 17:39     Удаление элемента списка list.STL
Еще ссылки по теме:

Удаление элемента со списка - C++
Вот у меня есть код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; struct OS { char Name ; ...

Удаление элемента из списка - C++
Нужно удалить из списка элемент, стоящий после элемента на который указывает Р. Очень срочно надо! Заранее спасибо.

Удаление элемента из списка - C++
Нужно удалить всех студентов с оценками 2. Entry *begin = new Entry; int mark=2; Entry *current=begin; while(current){ ...

Удаление элемента из списка - C++
Здравствуйте, нужна помощь, программа, выполняющая следующие задания на основе двусвязного списка. Не удается удалить элемент по дате...

Удаление элемента из списка - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; struct FileStruct //Структура файла { ...

Удаление элемента из списка - C++
необходимо удалить первый элемент из списка, помогите пожалуйста переписать функцию и помогите с вызовом этой функции в main() ...


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

Или воспользуйтесь поиском по форуму:
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
Ответ Создать тему
Опции темы

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