私の連絡先情報
郵便メール:
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
STLレビュー
共通インターフェイス、イテレータ型、基礎となる実装からこれらのコンテナを導入する方法
厳密に言えば、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 文字をインターセプトして返します。 |
オペレーター |