ホームページ >バックエンド開発 >C++ >std::vector から生データ ポインターを取得するにはどうすればよいですか?

std::vector から生データ ポインターを取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-11 17:34:02271ブラウズ

How to Retrieve a Raw Data Pointer from a std::vector?

std::vector から生データ ポインターを取得しています

問題:

void ポインターを受け入れる関数内の char 配列として std::vector を使用します。ベクターを直接、または begin() イテレータを介して渡そうとすると、不正なデータまたはコンパイラ警告が発生しました。

解決策:

標準データの生データにアクセスするには::vector は、次のいずれかのメソッドを使用して最初の要素のアドレスを取得します:

  • &something[0] または &something.front() - インデックス 0 の要素のアドレスを返します。
  • &*something.begin() - begin() イテレータが指す要素のアドレスを返します。

C 11 以降では、追加のオプションが使用可能です。

  • &something.data() - 最初の要素のアドレスを返し、空のコンテナーであっても安全を確保します。

例:

void process_data(const void *data);

std::vector<char> something;

// Cast the raw data pointer to char* for compatibility.
char *data_ptr = reinterpret_cast<char*>(something.data());
process_data(data_ptr);

以上がstd::vector から生データ ポインターを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。