我有一個指針的向量爲我的「派」類,存儲以這樣的方式:試圖刪除矢量指針重複。爲什麼我不能使用.erase()?
vector<Faction *> factionptr_;
在這一點上,我已經能夠整理我的按字母順序排列矢量,所以我想我在這裏可以使用此代碼刪除會出現彼此相鄰的任何重複:
void Faction::deleteDuplicateFaction(vector<Faction *> &factionptr_){
for (int i = 0; i < factionptr_.size()-1; i++){
if (factionptr_[i]->getFactionname() == factionptr_[i + 1]->getFactionname()){
cout << "it's the same" << endl;
factionptr_.erase(factionptr(i));
}
但我發現了在.erase(錯誤),我不明白:
IntelliSense: no instance of overloaded function "std::vector<_Ty, _Alloc>::erase [with _Ty=Faction *, _Alloc=std::allocator<Faction *>]" matches the argument list
argument types are: (Faction *)
object type is: std::vector<Faction *, std::allocator<Faction *>>
現在我明白我可以爲此使用迭代器,但我對它們還不太熟悉。儘管如此,我絕對不會反對使用迭代器的解決方案。
也許還有另一種方式?
factionptr是這樣的:
Faction * Faction::factionptr(int k) const{
if ((k < 0) or(k > numberOfFactions())) // elementary error checking
return NULL;
return factionptr_[k]; // returns a pointer to the k-th daughter
}
'factionptr_'!='factionptr' – WhozCraig
什麼是'factionptr'? – P0W
for(int i = 0; i
AlexanderVX