Примера: У меня есть класс MyClass, который состоит из 3-х частных атрибутов:Как удалить определенный элемент в списке на основе его позиция
- строка ITEMNAME
- количество поплавка дата
- строки
Затем я создаю список myClass
list<myClass> mytemp;
В моей mytemp
хранить несколько элементов внутри:
[ITEMNAME] [сумма] [дата]
myproductA 10 011214
myproductB 20 010115
myproductC 30 020115
myproductD 40 040115
Я хотел бы удалить myproductC
я в настоящее время:
list<myClass>::iterator p=mytemp.begin();
//productC would be list(3)
p++; p++; p++;
//therefore remove:
mytemp.remove(p);
Правильно ли я сказать, что? Однако p
является итератором, но list::remove
хочет получить значение.
Как решить эту проблему?
Использовать список :: erase – BWG
использовать 'std :: advance (mytemp, 3)' вместо увеличения итератора 3 раза. – PaulMcKenzie
@PaulMcKenzie: 'mytemp' - это' list'. Передайте 'p' вместо' mytemp'. И он хочет удалить третий элемент, поэтому используйте '2' вместо' 3' ('p' первоначально указывает на 1-й элемент).'std :: advance (p, 2)' –