第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

刪除循環(huán)內(nèi)的向量元素

刪除循環(huán)內(nèi)的向量元素

C++
繁華開滿天機 2019-09-02 09:34:33
我知道這個問題有類似的問題,但我沒有設(shè)法通過他們的幫助找到我的代碼。我只想通過檢查循環(huán)內(nèi)該元素的屬性來刪除/刪除向量的元素。我怎樣才能做到這一點?我嘗試了以下代碼,但收到了錯誤的模糊消息:'operator ='功能在'播放器'中不可用。 for (vector<Player>::iterator it = allPlayers.begin(); it != allPlayers.end(); it++) {     if(it->getpMoney()<=0)          it = allPlayers.erase(it);     else          ++it; }我該怎么辦?更新:你認為帶有指針成員的問題vector :: erase是否屬于同一個問題?我需要一個賦值運算符嗎?為什么?
查看完整描述

3 回答

?
倚天杖

TA貢獻1828條經(jīng)驗 獲得超3個贊

你不應(yīng)該it在for循環(huán)中增加:


for (vector<Player>::iterator it=allPlayers.begin(); 

                              it!=allPlayers.end(); 

                              /*it++*/) <----------- I commented it.

{


   if(it->getpMoney()<=0) 

      it = allPlayers.erase(it);

  else 

      ++it;

 }

注意評論部分; it++在那里不需要,因為it在身體本身中增加了。


至于錯誤“ 'operator ='函數(shù)在”播放器“中不可用 ”,它來自erase()內(nèi)部用于operator=移動向量中元素的用法。為了使用erase(),類的對象Player必須是可賦值的,這意味著你需要operator=為Player類實現(xiàn)。


無論如何,你應(yīng)該盡可能地避免原始循環(huán)1,而應(yīng)該更喜歡使用算法。在這種情況下,流行的Erase-Remove Idiom可以簡化你正在做的事情。


allPlayers.erase(

    std::remove_if(

        allPlayers.begin(), 

        allPlayers.end(),

        [](Player const & p) { return p.getpMoney() <= 0; }

    ), 

    allPlayers.end()

); 


查看完整回答
反對 回復(fù) 2019-09-02
?
青春有我

TA貢獻1784條經(jīng)驗 獲得超8個贊

您的具體問題是您的Player班級沒有賦值運算符。您必須使“播放器”可復(fù)制或移動,以便將其從矢量中移除。這是因為向量需要是連續(xù)的,因此需要重新排序元素以填充刪除元素時創(chuàng)建的間隙。


也:


使用std算法


allPlayers.erase(std::remove_if(allPlayers.begin(), allPlayers.end(), [](const Player& player)

{

    return player.getpMoney() <= 0;

}), allPlayers.end());

如果你有提升,甚至更簡單:


boost::remove_erase_if(allPlayers, [](const Player& player)

{

    return player.getpMoney() <= 0;

});

如果你不支持C ++ 11 lambdas

查看完整回答
反對 回復(fù) 2019-09-02
  • 3 回答
  • 0 關(guān)注
  • 356 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號