Heim  >  Artikel  >  Backend-Entwicklung  >  Entfernen Sie Vorkommen aller Zeichen aus der Zeichenfolge mithilfe von STL

Entfernen Sie Vorkommen aller Zeichen aus der Zeichenfolge mithilfe von STL

WBOY
WBOYnach vorne
2023-08-28 17:49:071344Durchsuche

Entfernen Sie Vorkommen aller Zeichen aus der Zeichenfolge mithilfe von STL

STL steht im Grunde für Standard Template Library, eine Sammlung vorgefertigter Codes, die häufig in Datenstrukturen und Algorithmen verwendet werden. Es wurde Anfang der 1990er Jahre von Ming Lee und Alexander Stepanov entwickelt.

Es besteht hauptsächlich aus drei Komponenten: Container, Algorithmus und Iterator. Container sind Objekte, die Daten speichern und bearbeiten, z. B. Listen, Vektoren, Mengen, Karten und Stapel. Algorithmen sind Funktionen, die mit in Containern gespeicherten Daten arbeiten, z. B. Daten suchen, sortieren und bearbeiten. Iteratoren sind Objekte, die die Navigation durch die Elemente eines Containers erleichtern.

STL ist zu einem wichtigen Bestandteil der Wettbewerbsprogrammierung geworden und bietet außerdem effizienten und robusten Code.

#include <iostream> 
#include <string> 

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

Ausgabe

Hello, world!

Algorithmus

  • Deklarieren Sie eine Zeichenfolge und Zeichen, die entfernt werden sollen. Speichern Sie sie dann in Variablen.

  • Durchlaufen Sie jedes Zeichen in der Zeichenfolge.

  • Überprüfen Sie, ob das aktuelle Zeichen mit dem Zeichen übereinstimmt, das Sie löschen möchten.

  • Wiederholen Sie die beiden oben genannten Vorgänge, bis alle Zeichen entfernt sind.

  • Drucken Sie die geänderte Zeichenfolge aus.

Methode

  • Methode 1 – Verwenden Sie die Funktionen „remove()“ und „erase()“.

  • Methode 2 – Verwenden Sie die Funktionen „remove_if()“ und „erase()“.

  • Methode 3 – Verwenden Sie die Funktionen find() und erase().

Es gibt mehrere Möglichkeiten, alle Vorkommen von Zeichen mithilfe von STL aus einer Zeichenfolge zu entfernen. Nachfolgend sind einige mögliche Methoden aufgeführt -

Methode 1: Verwenden Sie die Funktionen „remove()“ und „erase()“

Der Algorithmus

Remove() ist in der Header-Datei definiert. Der Wert wird aus dem Bereich entfernt, in diesem Fall ist es das Zeichen, das Sie entfernen möchten, und der Iterator kehrt zum neuen Ende der Sequenz zurück. 算法>

Diese Funktion verschiebt die Elemente nur an das Ende des Bereichs und stellt einen Iterator für das neue Ende bereit. Sie entfernt sie nicht wirklich aus dem Container.

Die Funktion

Erase() in C++ STL wird zum Löschen von Elementen aus einem Container verwendet. Abhängig vom Containertyp (Vektor oder String) werden zwei Parameter benötigt.

Die Funktion

erase() löscht „count“ Zeichen aus dem Startindex. Der erste Parameter ist ein optionaler Index, standardmäßig gleich 0. Wenn „count“ nicht angegeben ist, werden alle Zeichen im Container vom Index bis zum Ende der Zeichenfolge entfernt.

Beispiel

#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;
}

Ausgabe

heo word!

Methode 2: Verwenden Sie die Funktionen „remove_if( )“ und „erase( )“

„remove_if()“ in C++ STL ähnelt der Funktion „remove()“, entfernt jedoch nur Zeichen aus dem Container, wenn die angegebenen Bedingungen erfüllt sind. Die Methode

remove_if() entfernt alle Elemente im Bereich [first, last), wenn die Bedingung p erfüllt ist. Das unäre Prädikat p ist eine Funktion oder ein Funktionsobjekt, das ein einzelnes Argument von einem Element des Containers übernimmt und einen booleschen Wert zurückgibt, der angibt, ob das Element entfernt werden soll.

Beispiel

#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;
}

Ausgabe

heo word!

Methode 3: Schleifen und die Funktion erase() verwenden

Bei dieser Methode besteht die Idee darin, eine Schleife zu verwenden, um die Zeichenfolge zu iterieren und jedes Vorkommen von Zeichen einzeln zu entfernen.

Bei dieser Methode verwenden Sie eine for-Schleife, um die gesamte Zeichenfolge zu durchlaufen und jedes Zeichen einzeln zu prüfen, um festzustellen, ob es mit dem Zeichen übereinstimmt, das entfernt werden muss. Wenn es eine Übereinstimmung gibt, wird das Zeichen aus der Zeichenfolge entfernt; andernfalls wird mit dem nächsten fortgefahren.

Beispiel

#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;
}

Ausgabe

 hell wrld!

Fazit

Zusammenfassend bietet die C++-STL-Bibliothek ein schnelles und einfaches Verfahren zum Entfernen jeder Instanz eines Zeichens in einer Zeichenfolge. Mit nur wenigen Codezeilen können wir mithilfe der STL-Funktionen erase(), remove() und remove_if() alle Vorkommen eines bestimmten Zeichens aus einer Zeichenfolge entfernen.

Die Verwendung von STL in C++ bietet viele Vorteile, darunter Benutzerfreundlichkeit, Effizienz und Wiederverwendung. Insgesamt handelt es sich um eine leistungsstarke Bibliothek, die dabei hilft, zuverlässigen und effizienten Code zu generieren.

Das obige ist der detaillierte Inhalt vonEntfernen Sie Vorkommen aller Zeichen aus der Zeichenfolge mithilfe von STL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen