技術共有

STL レビュー - シリアル コンテナーおよびコンテナー アダプター パート

2024-07-08

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

STLレビュー

1. 共通コンテナ

共通インターフェイス、イテレータ型、基礎となる実装からこれらのコンテナを導入する方法

ここに画像の説明を挿入します


シーケンスコンテナ

厳密に言えば、string は stl に属さず、C 標準ライブラリに属します。

**基礎的な実装: **文字列は本質的に char 型のシーケンス テーブルです。コンパイラごとに具体的な実装が異なるため、ここでは私の短い答えのフレームワークのみを提供します。

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;

実際、VS シリーズでは、文字列にポインタと共用体 (配列とポインタ) が含まれており、文字列の長さが 16 バイト未満の場合は、事前にオープンされた配列が使用されます。バイト、スペースがヒープ上に適用され、ポインタが使用されます)、サイズおよび容量。

g では、string には、文字列用に開かれたスペースを指すポインタを含む、ヒープ上のスペースを指すポインタのみが含まれます。この参照カウントにより、これらのオブジェクトの割り当てとコピーに必要なのは、参照数を増やすための浅いコピーです。

イテレータの型: ランダムアクセス反復子

一般的に使用されるインターフェイス:

関数名関数
サイズ / 長さ文字列内の有効な文字の数を返します。
クリア / 予約 / サイズ変更有効な文字をクリアする/スペースを確保する/有効な文字の数を n に減らし、余分なスペースを文字 c で埋める
オペレーター[]pos 位置の文字を返します
プッシュバック / 追加 / 演算子 =文字列の末尾に文字 c/string/string を挿入します
文字列C 形式の文字列を返す
検索 / rfind npos文字列の pos 位置から開始して (前後に) 文字 c を検索し、文字列内の文字の位置を返します。 npos は返されません。
部分文字列str の pos 位置から開始して、n 文字をインターセプトして返します。
オペレーター