//頁表項結構
typedef struct _pagetableitem
{
unsigned pagenum; //頁號
unsigned blocknum; //塊號
}pgtabitem; //頁表
typedef pgtabitem *pagetable;
//請求表結構
typedef struct _reqtable
{
unsigned pid; //行程號
unsigned reqpagenum; //請求頁面數
pagetable pgtabadr; //頁表始址
bool state; //狀態
} reqtabitem;
list<reqtabitem> reqtable;
我要洗掉鏈表中的一個指定行程號的物件時怎么 洗掉?
reqtabitem temp;
list<reqtabitem>::iterator pos=reqtable.begin();
for(pos=reqtable.begin();pos!=reqtable.end();pos++)
{
if((*pos).pid==pid)
{
flag=true;
temp=*pos;
(*pos).state=false;
break;
}
}
reqtabitem.remove(temp)
怎么不對。報錯
uj5u.com熱心網友回復:
reqtabitem temp;reqtabitem.remove(temp) //這里是不能這樣用的。
reqtable 應該是 std::list<reqtabitem>,呼叫list的remove方法可以洗掉list中的元素
如果要洗掉list中與temp相等的全部元素,那么應該用std::remove_if方法。
我要洗掉鏈表中的一個指定行程號的物件時怎么 洗掉?
A:先用 std::find 查找該元素,然后用 list的remove方法洗掉它
uj5u.com熱心網友回復:
我最后用 reqtable.erase(pos);這個洗掉了uj5u.com熱心網友回復:
使用reqtable.erase(pos);就可以了,通常List洗掉元素也就這么干。uj5u.com熱心網友回復:
remove 是直接洗掉值
erase 是用的迭代訪問的,而且必須的i++,跳過下一個,否則會報錯
哭搞了好久沒搞明白
for(list<int>::iterator i = list_i.begin(); i != list_i.end();++i)
{
cout << "i = " << *i << endl;
list_i.erase(i++);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/133537.html
標籤:基礎類
