簡體   English   中英

如何根據位置刪除列表中的特定項目

[英]How do I remove a specific item in a list based on its position

示例:我有一個包含3個私有屬性的myClass類:

  1. 字符串itemName
  2. 浮動金額
  3. 字符串日期

然后我創建一個myClass列表

list<myClass> mytemp;

在我的mytemp我在mytemp存儲了一些物品:

[itemName] [金額] [日期]

  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中等於給定值的所有元素。

使用std::list::erase() 方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM