首頁 > 後端開發 > C++ > 使用STL從字串中刪除所有字元的出現次數

使用STL從字串中刪除所有字元的出現次數

WBOY
發布: 2023-08-28 17:49:07
轉載
1375 人瀏覽過

使用STL從字串中刪除所有字元的出現次數

STL 基本上代表標準範本庫,它是資料結構和演算法中經常使用的預先編寫的程式碼的集合。它是由 Ming Lee 和 Alexander Stepanov 於 20 世紀 90 年代初開發的。

它主要由容器、演算法和迭代器三個元件組成。容器是儲存和操作資料的對象,例如列表、向量、集合、映射和堆疊。演算法是對儲存在容器中的資料進行操作的函數,例如搜尋、排序和操作資料。迭代器是可以輕鬆瀏覽容器元素的物件。

STL 已成為競爭性程式設計的重要組成部分,它還提供高效且健壯的程式碼。

#include <iostream> 
#include <string> 

using namespace std; 
int main() { 
   string a = "Hello, world!"; 
   cout << a << endl; 
   return 0; 
} 
登入後複製

輸出

Hello, world!
登入後複製

演算法

  • 宣告一個要刪除的字串和字元。然後將它們儲存在變數中。

  • 循環遍歷字串中的每個字元。

  • 檢查目前字元是否與要刪除的字元相符。

  • 重複上述兩個過程,直到刪除所有出現的字元。

  • 列印修改後的字串。

方法

  • 方法 1 - 使用remove() 和erase() 函數。

  • 方法 2 - 使用remove_if() 和erase() 函數。

  • 方法3 - 使用find()和erase()函數。

有多種方法可以使用 STL 刪除字串中所有出現的字元。下面列出了一些可能的方法 -

方法一:使用remove()和erase()函數

Remove() 演算法在頭檔中定義。它從範圍中刪除值,在本例中,它將是您要刪除的字符,並將迭代器返回到序列的新末尾。

該函數僅將元素移動到範圍的末尾,並為新的末尾提供迭代器,它實際上並沒有將它們從容器中刪除。

C STL 中的

Erase() 函數用於從容器中刪除元素。它需要兩個參數,這取決於容器的類型(向量或字串)。

erase() 函數從起始索引中刪除「count」個字元。第一個參數是可選索引,預設等於 0。如果未指定“count”,它將刪除容器中從索引開始到字串末尾的所有字元。

範例

#include <iostream>
#include <string>
#include <algorithm>
 using namespace std;
int main() {
   string str = "hello world!";
   char ch = 'l';
   // Use remove() to remove all occurrences of the character.
   str.erase(remove(str.begin(), str.end(), ch), str.end());
   cout << str << endl;
   return 0;
}
登入後複製

輸出

heo word!
登入後複製
登入後複製

方法 2:使用remove_if( ) 和erase( ) 函數

C STL 中的‘remove_if()’與remove()函數類似,但它僅在滿足指定條件時才從容器中刪除字元。

remove_if() 方法如果滿足條件 p,則刪除範圍 [first, last) 中的所有元素。一元謂詞 p 是一個函數或函數對象,它從容器的元素中取得單一參數,並傳回一個布林值,指示是否應刪除該元素。

範例

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
   string str = "hello world!";
   char ch = 'l';
   str.erase(remove_if(str.begin(), str.end(), [=](char c) { return c == ch; }), str.end());
   cout << str << endl;
   return 0;
}
登入後複製

輸出

heo word!
登入後複製
登入後複製

方法3:使用迴圈和erase()函數

在這種方法中,其想法是使用循環來迭代字串並逐一刪除每個出現的字元。

在此方法中,使用 for 迴圈遍歷整個字串,單獨檢查每個字元以查看其是否與需要刪除的字元相符。如果匹配,則會從字串中刪除該字元;否則,它將繼續進行下一個。

範例

#include <iostream>
#include <string>
using namespace std;
int main() {
   string str = "hello world!";
   char ch = 'o';
   // Use a loop to remove all occurrences of the character
   for (int i = 0; i < str.length(); ) {
      if (str[i] == ch) {
         str.erase(i, 1);
      } else {
         ++i;
      }
   }
   cout << str << endl;
   return 0;
}
登入後複製

輸出

 hell wrld!
登入後複製

結論

總之,C STL 函式庫提供了快速、簡單的過程來消除字串中某個字元的每個實例。只需幾行程式碼,我們就可以使用STL的erase()、remove()和remove_if()函數從字串中消除所有出現的特定字元。

在 C 中使用 STL 有許多好處,包括易用性、效率和重複使用。總的來說,它是一個強大的庫,有助於產生可靠、高效的程式碼。

以上是使用STL從字串中刪除所有字元的出現次數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板