如何根据列表中的位置删除特定项目
How do I remove a specific item in a list based on its position
示例:我有一个myClass类,它由3个私有属性组成:
- 字符串项名称
- 浮点数
- 字符串日期
然后我创建一个myClass
列表
list<myClass> mytemp;
在我的mytemp
里,我存放了一些物品:
[ 项目名称 ] [ 金额 ] [ 日期 ]
我的产品A 10 011214
我的产品B 20 010115
myproductC 30 020115
我的产品D 40 040115
我想删除我的产品C
我目前有:
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
中等于给定值的所有元素。
使用std::list::erase()
方法。
相关文章:
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- C++ 从链表中删除项目时出现问题
- 从 std::vector 中删除项目时"Iterator not incrementable"
- 从 QTreeView 中删除项目时取消选择所有行
- 从传递给新线程C++的矢量中删除项目
- 如何创建一个函数,该函数可以从一个qtreewidget中删除项目并将其添加到另一个函数
- 在拖放 QML 列表中插入/删除项目使用 cpp 模型查看
- 如何在不删除C++集中删除项目?
- CMake 正在删除项目 c++
- 如何从 qmake 中的包含路径中删除项目的根目录
- 从多个 std::vector 中删除项目的最快方法
- 这是从 std::vector 中删除项目的有效方法吗?
- 从C 列表中删除项目
- STD :: MAP-如何查找或添加,然后可以在一次搜索中删除项目
- 使用迭代器从Boost多指数中删除项目时的一致性
- C++从指针数组中删除项目
- 如何设置CMAKE_INTDIR或CMAKE_CFG_INTDIR来删除项目配置
- 如何从std::列表中删除项目
- 尝试从__FILE__中删除项目路径
- Delphi XE-无法从系统菜单中删除项目