std::vector Raw データ ポインターの取得
プログラミングでは、多くの場合、生のポインターを期待する関数にデータを渡す必要があります。データ自体。 std::vector のような動的コンテナを操作する場合、このタスクは困難になる可能性があります。
const void ポインターを入力として受け取る関数 process_data() があるシナリオを考えてみましょう。以前は、単純に char 配列を参照によって渡すことができました:
ただし、このロジックを std::vector
または開始イテレータのアドレスを取得します:
結果として無意味なデータまたはコンパイラ警告が発生します。
課題は、std 内の実際のデータへのポインタを取得することにあります。 ::ベクター。これを行うには、いくつかのオプションが利用可能です:
1.最初の要素へのアクセス:
ベクトル内の最初の要素のアドレスを取得できます:
2。 data() メンバー関数の使用 (C 11 以降):
C 11 では、std::vector に data() メンバー関数が導入されました:
この関数ベクトルが空の場合でも安全に呼び出すことができるため、優先されます。
注: &something は、データではなくベクトル オブジェクト自体のアドレスを提供します。したがって、この目的には使用しないでください。
以上がstd::vector から生データ ポインターを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。