Rumah > pembangunan bahagian belakang > C++ > Teknologi carian rentetan dalam C++

Teknologi carian rentetan dalam C++

WBOY
Lepaskan: 2023-08-22 11:17:04
asal
5572 orang telah melayarinya

Teknologi carian rentetan dalam C++

Dalam C++, teknologi carian rentetan adalah kemahiran yang sangat penting kerana ia merupakan salah satu kemahiran yang diperlukan dalam mengendalikan operasi rentetan. C++ menyediakan pelbagai fungsi dan algoritma terbina dalam untuk membantu kami melakukan carian rentetan Fungsi dan algoritma ini menyediakan set kemahiran biasa yang boleh digunakan dalam pelbagai situasi yang berbeza.

Artikel ini akan memperkenalkan beberapa teknik carian rentetan C++ yang biasa digunakan, serta kelebihan, keburukan dan senario penggunaannya.

  1. Fungsi carian rentetan

Fungsi carian rentetan C++ ialah salah satu teknik carian yang paling biasa digunakan Fungsi ini direka untuk mencari rentetan sasaran atau aksara dalam rentetan. Berikut ialah beberapa fungsi carian rentetan yang biasa digunakan dalam C++:

  • find()

find() fungsi boleh digunakan untuk mencari subrentetan atau aksara dalam rentetan dan mengembalikan lokasi kejadian pertamanya. Jika tidak dijumpai, std::string::npos dikembalikan. Sebagai contoh, kod berikut akan mencari subrentetan "hello" dalam rentetan s:

std::string s = "hello world";
size_t pos = s.find("hello");
if (pos != std::string::npos) {
    // found
}
Salin selepas log masuk
  • rfind()

rfind() fungsi adalah serupa dengan fungsi find(), tetapi ia mencari dari sebelah kanan dan mengembalikan terakhir Lokasi di mana ia muncul. Sebagai contoh, kod berikut akan mencari kejadian terakhir aksara 'e' dalam rentetan s:

std::string s = "hello world";
size_t pos = s.rfind('e');
if (pos != std::string::npos) {
    // found
}
Salin selepas log masuk
  • find_first_of()

find_first_of() fungsi digunakan untuk mencari kejadian pertama aksara yang diberikan dalam rentetan salah satu lokasi. Sebagai contoh, kod berikut akan mencari kemunculan pertama vokal dalam rentetan s:

std::string s = "hello world";
size_t pos = s.find_first_of("aeiou");
if (pos != std::string::npos) {
    // found
}
Salin selepas log masuk
  • find_last_of()

Fungsi find_last_of() adalah sama dengan fungsi find_first_of() tetapi cari dari kanan ke kiri . Sebagai contoh, kod berikut akan mencari kemunculan terakhir vokal dalam rentetan s:

std::string s = "hello world";
size_t pos = s.find_last_of("aeiou");
if (pos != std::string::npos) {
    // found
}
Salin selepas log masuk

Fungsi ini ialah teknik mencari rentetan yang paling biasa digunakan dalam C++, ia sangat fleksibel dan boleh digunakan untuk mencari pelbagai jenis rentetan rentetan. dan watak. Kelemahan mereka ialah apabila perlawanan pertama ditemui, carian berhenti dan lokasi dikembalikan, yang mungkin bukan hasil yang anda cari.

  1. Algoritma carian rentetan

C++ STL menyediakan beberapa algoritma yang sangat berkuasa yang boleh digunakan untuk mencari rentetan sasaran atau aksara dalam rentetan. Algoritma ini direka bentuk untuk tujuan umum dan boleh mengendalikan pelbagai jenis struktur data. Berikut ialah beberapa algoritma carian rentetan C++ yang biasa digunakan:

  • std::search()

search() fungsi boleh digunakan untuk mencari urutan dalam julat dua iterator dan mengembalikan lelaran urutan pertama. Sebagai contoh, kod berikut akan mencari subrentetan "dunia" dalam rentetan s:

std::string s = "hello world";
std::string sub = "world";
auto it = std::search(s.begin(), s.end(), sub.begin(), sub.end());
if (it != s.end()) {
    // found
}
Salin selepas log masuk
  • std::find()

find() fungsi boleh digunakan untuk mencari elemen dalam julat lelaran dan mengembalikan elemen iterator. Sebagai contoh, kod berikut akan mencari kedudukan aksara 'e' dalam rentetan s:

std::string s = "hello world";
auto it = std::find(s.begin(), s.end(), 'e');
if (it != s.end()) {
    // found
}
Salin selepas log masuk
  • std::find_first_of()

Fungsi find_first_of() adalah sama seperti fungsi rentetan yang diperkenalkan sebelum ini, dan digunakan dalam iterator Mencari elemen pertama dalam julat yang sepadan dengan salah satu aksara yang diberikan dan mengembalikan lelaran ke atas elemen. Sebagai contoh, kod berikut akan mencari vokal pertama dalam rentetan s:

std::string s = "hello world";
auto it = std::find_first_of(s.begin(), s.end(), "aeiou");
if (it != s.end()) {
    // found
}
Salin selepas log masuk

Algoritma ini adalah umum dan boleh skala serta boleh digunakan dalam banyak struktur dan senario data yang berbeza. Kelemahan mereka ialah mereka boleh menjadi lebih perlahan daripada teknik carian langsung bagi fungsi rentetan kerana mereka memerlukan operasi lelaran tambahan untuk mencari rentetan atau aksara sasaran.

  1. Ekspresi biasa

Pustaka standard C++ juga menyediakan perpustakaan ekspresi biasa, yang boleh digunakan untuk mencari subrentetan yang sepadan dengan corak tertentu dalam rentetan. Ungkapan biasa boleh digunakan untuk mencari corak yang lebih kompleks, contohnya ia boleh membantu kami mencari teks dalam format tertentu seperti nombor telefon mudah alih, alamat e-mel, dsb. Berikut ialah contoh menggunakan perpustakaan ekspresi biasa untuk mencari corak ringkas:

std::string s = "The quick brown fox jumps over the lazy dog";
std::regex reg("fox.*lazy");
if (std::regex_search(s, reg)) {
    // found
}
Salin selepas log masuk

Ekspresi biasa ialah teknik yang berkuasa dan fleksibel yang boleh membantu kami memproses dan mencari pelbagai jenis data teks. Tetapi kelebihan ini juga membawa beberapa kelemahan Sintaks ungkapan biasa adalah kompleks dan mungkin lebih perlahan daripada teknik carian lain yang diperkenalkan sebelum ini.

Ringkasan

Dalam pengaturcaraan C++, teknologi carian rentetan merupakan bidang yang penting. Artikel ini memperkenalkan beberapa teknik carian rentetan biasa, termasuk fungsi carian rentetan, algoritma carian rentetan dan ungkapan biasa. Kelemahan teknikal ini berbeza-beza, tetapi semuanya boleh digunakan dalam pelbagai struktur dan senario data yang berbeza. Sebagai pengaturcara, anda perlu memilih alat yang paling sesuai untuk anda melakukan carian rentetan dengan kelajuan dan ketepatan terpantas.

Atas ialah kandungan terperinci Teknologi carian rentetan dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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