Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Iterator dalam C++ STL

Iterator dalam C++ STL

WBOY
WBOYasal
2023-08-21 20:52:431415semak imbas

C++ STL (Perpustakaan Templat Standard) ialah salah satu perpustakaan standard bahasa pengaturcaraan C++ Ia mengandungi satu siri struktur data dan algoritma. Dalam STL, iterator (iterator) ialah alat yang sangat penting untuk melintasi dan mengakses dalam bekas STL.

Pelajar ialah objek yang serupa dengan penunjuk Ia boleh menunjuk ke elemen dalam bekas (seperti vektor, senarai, set, peta, dll.), dan boleh mengalih dan mengakses elemen dalam bekas. Iterator memainkan peranan penting dalam STL Mereka bukan sahaja alat untuk melintasi bekas, tetapi juga digunakan secara meluas dalam algoritma, seperti menyusun, mencari, menyalin dan algoritma lain.

Iterators dalam STL boleh dibahagikan kepada lima jenis:

  1. Input Iterator: digunakan untuk melintasi elemen dalam bekas, tetapi hanya boleh melintasi sekali dan tidak boleh mengubah suai nilai elemen.
  2. Output Iterator: digunakan untuk menulis elemen ke dalam bekas, dan hanya boleh dilalui sekali.
  3. Pengulang Hadapan: Ia boleh melintasi ke hadapan dalam bekas dan boleh melintasi beberapa kali, tetapi ia tidak boleh melakukan akses rawak.
  4. Pembicara Dwiarah: Ia boleh melintasi ke hadapan dan ke belakang, tetapi ia masih tidak boleh melakukan akses rawak.
  5. Random Access Iterator: Boleh melakukan akses dan operasi rawak, serta menyediakan semua operasi penunjuk, seperti penambahan, penolakan, perbandingan, dsb.

Dalam STL, terdapat dua konsep iterator: mula dan tamat. mula menunjuk ke elemen pertama bekas, titik akhir ke elemen terakhir bekas, dan fungsi end() juga disediakan untuk mengembalikan kedudukan seterusnya di hujung bekas, yang sesuai untuk lintasan gelung. Selain itu, STL menyediakan sejumlah besar algoritma, seperti isihan, cari, salin, dll., semuanya dilaksanakan berdasarkan iterator.

Berikut ialah contoh kod untuk melintasi menggunakan iterator:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> vec{ 1, 2, 3, 4, 5 };
    vector<int>::iterator it;
    for (it = vec.begin(); it != vec.end(); it++) {
        cout << *it << " ";
    }
    return 0;
}

Dalam contoh di atas, kami mula-mula mencipta bekas vektor dan melintasinya menggunakan iterator. vectorbd43222e33876353aff11e13a7dc75f6::iterator ialah jenis iterator bagi bekas vektor Kedudukan permulaan bekas vektor diperoleh melalui vec.begin(), dan kedudukan akhir diperoleh melalui vec.end(). Gunakan gelung for untuk melintasi keseluruhan bekas, dan gunakan operator *it untuk mendapatkan nilai elemen yang sepadan dan mengeluarkannya.

Ringkasnya, iterator adalah salah satu alat yang sangat penting dalam STL. Ia menjadikan bekas dan algoritma dalam STL lebih fleksibel dan boleh diperluaskan. Sama ada anda seorang pemula atau peminat pengaturcaraan lanjutan, anda harus menguasai penggunaan iterator untuk menggunakan struktur data dan algoritma dengan lebih baik dalam STL.

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

Kenyataan:
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