Berbagi teknologi

Tinjauan STL-Bagian Kontainer Serial dan Adaptor Kontainer

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Ulasan STL

1. Wadah umum

Cara memperkenalkan container ini, mulai dari antarmuka umum, tipe iterator, dan implementasi yang mendasarinya

Masukkan deskripsi gambar di sini


wadah urutan

rangkaian

Sebenarnya, string bukan milik stl, melainkan milik perpustakaan standar C

**Implementasi yang mendasari: **String pada dasarnya adalah tabel urutan tipe char. Karena implementasi spesifik di bawah kompiler yang berbeda berbeda, saya hanya memberikan kerangka jawaban singkat saya di sini.

class string
{
public:
    typedef char* iterator;
    typedef const char* const_iterator; 
private:
    char* _str; 		// 堆上开辟的顺序表空间
    size_t _size; 		// 有效字符个数
    size_t _capacity; 	// _str的空间大小

    static const size_t npos; // 最大字符串大小
};

const size_t string::npos = -1;

Faktanya, di bawah seri VS, string berisi pointer dan gabungan (array dan pointer). Jika panjang string kurang dari 16 byte, array yang dibuka terlebih dahulu akan digunakan byte, ruang akan diterapkan pada heap dan penunjuk akan digunakan

Di bawah g, string hanya berisi penunjuk, yang menunjuk ke suatu spasi di heap, termasuk penunjuk yang menunjuk ke ruang yang dibuka untuk string, jumlah referensi, ukuran dan kapasitas salinan dangkal untuk menambah jumlah referensi

Jenis iterator: Iterator akses acak

Antarmuka yang umum digunakan:

Nama fungsiFungsi
ukuran / panjangMengembalikan jumlah karakter valid dalam sebuah string
hapus / simpan / ubah ukuranHapus karakter yang valid/cadangan spasi/kurangi jumlah karakter yang valid menjadi n, dan isi spasi tambahan dengan karakter c
operator[]Mengembalikan karakter pada posisi pos
push_back / tambahkan / operatornya =Sisipkan karakter c/string/string di akhir string
c_strKembalikan string format C
temukan / rfind nposTemukan karakter c mulai dari posisi pos string dan pergi (kembali/sebelum), dan kembalikan posisi karakter dalam string tidak dikembalikan.
substrMulai dari posisi pos di str, intersepsi n karakter dan kembalikan
operator