gpt4 book ai didi

c++ - 如何根据位置删除列表中的特定项目

转载 作者:行者123 更新时间:2023-11-30 01:50:10 25 4
gpt4 key购买 nike

示例:我有一个 myClass 类,它包含 3 个私有(private)属性:

  1. 字符串项目名称
  2. float 金额
  3. 字符串日期

然后我创建一个 myClass

列表
list<myClass> mytemp;

在我的 mytemp 中,我在里面存储了一些项目:

[ itemName ] [ amount ] [ date ]

  1. myproductA 10 011214

  2. myproductB 20 010115

  3. myproductC 30 020115

  4. 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 想要一个值。

我该如何克服这个问题?

最佳答案

如果你确定列表中的目标元素是第三个元素那么就不用这段代码

list<myClass>::iterator p=mytemp.begin();

//productC would be list(3)

p++; p++; p++;

//therefore remove:

mytemp.remove(p);

如果您使用的是 C++11 或更高版本,您可以将其替换为:

mytemp.erase( std::next( mytemp.begin(), 2 ) );

如果您使用的是旧版本,则可以这样:

list<myClass>::iterator p = mytemp.begin();
std::advance( p, 2 );
mytemp.erase( p );

使用std::next()std::advance() , 你需要 #include <iterator> .

至于方法remove() , 它删除了 list 的所有元素等于给定值。

关于c++ - 如何根据位置删除列表中的特定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27863812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com