2
我有一個指向對象的指針向量。我想根據由成員函數報告的屬性從此向量中移除對象。分區指針向量時的謂詞語法(C++)
我想跟隨一個很好的例子,我發現如何從向量中刪除某些指針(及其關聯的對象)。其基本思想是對矢量進行分區,刪除所選對象,然後刪除指向這些對象的指針。下面是例子(從Dr. Dobbs):
vector<Object *> v ;
v.push_back(new Object(...)) ;
...
vector<Object *>::iterator last =
partition(v.begin(), v.end(), not1(predicate())) ;
for(vector<Object *>::iterator i = last ; i != v.end() ; ++i)
{
delete *i ;
}
v.erase(last, v.end()) ;
我難倒謂詞的正確語法。我的物品屬於應變類,而我的矢量是矢量< Strain *> liveStrains。謂詞應該是應變成員函數isExtinct()。以下不起作用:
vector< Strain * >::iterator last = partition(liveStrains.begin(), liveStrains.end(), not1(std::mem_fun_ref(&Strain::isExtinct)));
我可以看到,我試圖調用一個指向對象的指針而不是對象本身的成員函數。爲了解決這個問題,嘗試將&更改爲*(我明顯是一個新手),並且我嘗試爲類Simulation創建一個成員函數,用於在成員函數中更新liveStrains。我不確定這是值得進入沒有工作的細節。我被可用的語法選項所困擾,或者如果我想要做的甚至是允許的。
在此先感謝您的幫助。