生のベクトル データに Char 配列としてアクセスする
関数内で std::vector を char 配列として利用する必要性を考慮してください。 void ポインターを期待します。最初は、通常の char 配列を使用するのが簡単でした。ただし、std::vector の柔軟性に切り替えると、その生データにアクセスする際に課題が生じます。
ベクトル ポインターを関数に渡す
即時実行される試みは、 void ポインターが望ましい結果を生成しなかったため、ベクトル &something またはそのイテレーター &something.begin() を関数に渡します。代わりに、&something はデータ自体ではなく std::vector オブジェクトのアドレスを返しますが、&something.begin() は左辺値として許可されていない反復子のアドレスを提供します。
インデックス 0 の要素
解決策は、ベクトル内の最初の要素のアドレスを取得することにあります。これは複数の方法で実現できます。 1 つのアプローチは、インデックス 0 の要素のアドレスを与える &something[0] を使用することです。別のオプションは、同じタスクを実行する &something.front() を使用することです。
Data() C 11 の関数
C 11 以降では、data() という便利なメンバー関数が std::vector に導入されました。この関数は、コンテナ内の最初の要素のアドレスを直接返します。その利点は、コンテナーが空の場合でも安全に使用できることです。
結論
void ポインターを受け入れる関数に std::vector データを渡すには、ベクトル内の最初の要素のアドレスを取得するために必要です。これは、C バージョンとコンテナ サイズに応じて、&something[0]、&something.front()、または data() 関数を使用して実行できます。
以上がC で生のベクトル データに Char 配列としてアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。