91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

刪除C++容器值相關方法是怎么樣的

發布時間:2021-10-27 18:58:42 來源:億速云 閱讀:140 作者:柒染 欄目:編程語言

這期內容當中小編將會給大家帶來有關刪除C++容器值相關方法是怎么樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

在程序開發的過程中,C++編程語言中的容器里有會有很多值,有些是比較有用的,而有些是沒用的。那么對于這些沒有用的值我們應該如何進行刪除呢?在這里我們將會為大家詳細介紹刪除C++容器值的相關方法。

C++的容器中一般都提供erase函數,此函數接收的參數一般有一個是一個迭代器:

如果刪除C++容器值的話,我們可能一般都用過:

list<int> c;  // todo insert items  for (list<int>::iterator i = c.begin(); i!= c.end(); ++i)  {  if ((*i)>10)  {  // 如果有一個值大于10,刪除之  c.erase(i);  break;  }  }

上述代碼在刪除一個元素的時候并沒有問題。。。但是我們想刪除所有大于10的值,于是:

list<int> c;  // todo insert items  for (list<int>::iterator i = c.begin(); i!= c.end(); ++i)  {  if ((*i)>10)  {  // 刪除所有大于10的值  c.erase(i);  }  }

滿懷希望的編譯,運行。。。于是異常發生。。。啊。。。哦。。。

原來是刪除迭代器i后,i所指的元素已經失效了,然后給i++,它已經不在存在了。。。于是絞盡腦汁,出籠了下面的刪除C++容器值代碼:

list<int> c;  // todo insert items  list<int>::iterator nextitr = c.begin();  for (list<int>::iterator i = c.begin();;)  {  if(nextitr == c.end())  break;  ++nextitr;  if ((*i)>10)  {  // 如果有一個值大于10,刪除之  c.erase(i);  }  i = nextitr;  }

上面的代碼很容易理解,即在刪除一個迭代器之前,把它的之后的迭代器先存儲,然后在下次循環的時候利用之前存儲的迭代器。

OK,我們看到上面這段代碼可以工作了,行為似乎也還正確,只是。。。代碼似乎多了點。我想代碼能夠少點就好了,邏輯也不要那么麻煩。那么我們看下面的代碼(轉載自Effective STL)。

list<int> c;  // todo insert items  for (list<int>::iterator i = c.begin(); i!= c.end();)  {  if ((*i)>10)  {  // 如果有一個值大于10,刪除之  c.erase(i++);  }  else  i++;  }

嗯。。。高手就是高手(我以前根本沒有在意過++i和i++在使用的過程中能有這么大的區別)好了,***再提供一個版本,利用list的remove_if函數。

bool fun(int i)  {  if(i>10)  return true;  else  return false;  }  list<int> c;  // todo insert items  c.remove_if(fun);

嗯,其實刪除C++容器值的方式還是挺多的。

上述就是小編為大家分享的刪除C++容器值相關方法是怎么樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

保德县| 枣庄市| 宁强县| 东莞市| 大冶市| 福安市| 龙海市| 濉溪县| 保定市| 眉山市| 阳高县| 吴忠市| 广州市| 合水县| 孟州市| 乌海市| 宁津县| 绥阳县| 隆尧县| 临安市| 通城县| 清水县| 宁陕县| 城市| 健康| 乌恰县| 同德县| 宜宾市| 太白县| 九寨沟县| 嵩明县| 景洪市| 金乡县| 鹤庆县| 文成县| 阳原县| 正安县| 滦平县| 清丰县| 台北市| 巴彦淖尔市|