Rumah > pembangunan bahagian belakang > C++ > Alih keluar kejadian semua aksara daripada rentetan menggunakan STL

Alih keluar kejadian semua aksara daripada rentetan menggunakan STL

WBOY
Lepaskan: 2023-08-28 17:49:07
ke hadapan
1374 orang telah melayarinya

Alih keluar kejadian semua aksara daripada rentetan menggunakan STL

STL pada asasnya bermaksud Perpustakaan Templat Standard, yang sering digunakan dalam struktur data dan algoritma A koleksi kod pratulis. Ia telah dibangunkan oleh Ming Lee dan Alexander Stepanov pada awal 1990-an.

Ia terutamanya terdiri daripada tiga komponen: bekas, algoritma dan lelaran. Bekas ialah objek yang menyimpan dan memanipulasi data, seperti senarai, vektor, set, peta dan tindanan. Algoritma ialah fungsi yang beroperasi pada data yang disimpan dalam bekas, seperti mencari, menyusun dan memanipulasi data. Iterator ialah objek yang memudahkan untuk menavigasi unsur-unsur bekas.

STL telah menjadi bahagian penting dalam pengaturcaraan kompetitif dan ia juga menyediakan kod yang cekap dan mantap.

#include <iostream> 
#include <string> 

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

Output

Hello, world!
Salin selepas log masuk

Algoritma

  • Mengisytiharkan rentetan dan aksara untuk dipadamkan. Kemudian simpannya dalam pembolehubah.

  • Gelung setiap aksara dalam rentetan.

  • Semak sama ada aksara semasa sepadan dengan aksara yang akan dipadamkan.

  • Ulang dua proses di atas sehingga semua kemunculan aksara dialih keluar.

  • Cetak rentetan yang diubah suai.

kaedah

  • Kaedah 1 - Gunakan fungsi buang() dan padam().

  • Kaedah 2 - Gunakan fungsi remove_if() dan erase().

  • Kaedah 3 - Gunakan fungsi find() dan padam().

Terdapat beberapa cara untuk mengalih keluar semua kejadian aksara daripada rentetan menggunakan STL. Di bawah disenaraikan beberapa kaedah yang mungkin -

Kaedah 1: Gunakan fungsi buang() dan padam()

Remove() Algoritma ditakrifkan dalam fail pengepala. Ia mengalih keluar nilai daripada julat, dalam kes ini ia akan menjadi aksara yang anda mahu alih keluar, dan mengembalikan lelaran ke penghujung jujukan baharu.

Fungsi ini hanya mengalihkan elemen ke hujung julat dan menyediakan lelaran ke hujung baharu, ia sebenarnya tidak mengeluarkannya daripada bekas.

Fungsi

Erase() dalam C++ STL digunakan untuk memadamkan elemen daripada bekas. Ia memerlukan dua parameter, bergantung pada jenis bekas (vektor atau rentetan).

Fungsi

erase() memadamkan aksara "kira" daripada indeks permulaan. Parameter pertama ialah indeks pilihan, sama dengan 0 secara lalai. Jika "kiraan" tidak dinyatakan, ia akan mengalih keluar semua aksara dalam bekas dari indeks ke penghujung rentetan.

Contoh

#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;
}
Salin selepas log masuk

Output

heo word!
Salin selepas log masuk
Salin selepas log masuk

Kaedah 2: Gunakan fungsi remove_if( ) dan padam( )

‘remove_if()’ dalam C++ STL

adalah serupa dengan fungsi remove(), tetapi ia hanya mengalih keluar aksara daripada bekas apabila syarat yang ditetapkan dipenuhi.

remove_if()

Kaedah mengalih keluar semua elemen dalam julat [pertama, terakhir) jika syarat p dipenuhi. Predikat unary p ialah fungsi atau objek fungsi yang mengambil satu hujah daripada elemen bekas dan mengembalikan nilai Boolean yang menunjukkan sama ada elemen itu perlu dialih keluar.

Contoh

#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;
}
Salin selepas log masuk

Output

heo word!
Salin selepas log masuk
Salin selepas log masuk

Kaedah 3: Gunakan fungsi gelung dan padam()

Dalam kaedah ini, ideanya ialah menggunakan gelung untuk mengulang rentetan dan mengalih keluar setiap kemunculan aksara satu demi satu.

Dalam kaedah ini, gunakan gelung for untuk menggelungkan keseluruhan rentetan, semak setiap aksara secara individu untuk melihat sama ada ia sepadan dengan aksara yang perlu dialih keluar. Jika terdapat padanan, watak itu dikeluarkan daripada rentetan jika tidak, ia diteruskan ke yang seterusnya.

Contoh

#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;
}
Salin selepas log masuk

Output

 hell wrld!
Salin selepas log masuk
KESIMPULAN

Ringkasnya, perpustakaan C++ STL menyediakan prosedur yang pantas dan mudah untuk menghapuskan setiap contoh aksara dalam rentetan. Dengan hanya beberapa baris kod, kita boleh menghapuskan semua kejadian aksara tertentu daripada rentetan menggunakan fungsi erase(), remove() dan remove_if() STL.

Terdapat banyak faedah menggunakan STL dalam C++, termasuk kemudahan penggunaan, kecekapan dan penggunaan semula. Secara keseluruhan, ia adalah perpustakaan yang berkuasa yang membantu menjana kod yang boleh dipercayai dan cekap. #🎜🎜#

Atas ialah kandungan terperinci Alih keluar kejadian semua aksara daripada rentetan menggunakan STL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan