std::vector の生データ ポインターを提供する
std::vector を char 配列として操作する場合、 void ポインターを期待する関数に生データ ポインターを渡す必要があります。元々は、次のコードに示されているように、char 配列がこの目的に使用されていました:
char something[] = "my data here"; process_data(something);
しかし、std::vector のダイナミズムが望ましいため、次の試みが行われます:
vector<char> something; *cut* process_data(something);
ベクトルの生のデータにアクセスできるように、char ベクトルを関数に渡す際に課題が発生します。 data.
生データ ポインターの受け渡し
&something を使用してベクトル オブジェクトのアドレスを渡すことは、データのアドレスを提供しないため、正しくありません。同様に、&something.begin() の使用は標準的ではないため、警告が表示されます。
正しいアプローチは、コンテナの最初の要素のアドレスを取得することです。これは次の方法で実現できます。
&something[0] // or &something.front() &*something.begin()
C 11 では、std::vector クラスに新しいメンバー関数 data() が導入され、上記のメソッドと同じ目的を果たします。これはコンテナの最初の要素のアドレスを返し、コンテナが空の場合でも安全に使用できます。
以上が「std::vector」から生データ ポインタを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。