私はこのプロトタイプを持っているwrite
機能を使用して、ソケットにstd::vector<char>
からのデータを書き込みたい:std :: vectorの最初の要素へのポインタを取得するにはどうすればよいですか?
ssize_t write(int, const void *, size_t);
この関数の第2引数はstd::vector<char>
の最初の要素へのポインタでなければなりません。この要素へのポインタを取得するにはどうすればよいですか?
私はstd::vector::front
を試しましたが、これは参照が必要ですが、ポインタが必要です。 &vec[0]
と、最初の要素のアドレスを取ることによって
.dataの()(C++ 11)を使用することができスローする
std::out_of_range
をご希望の場合。配列が空の場合、mv_vec [0]は機能しません。 – TarmoPikaro@TarmoPikaroそれでもサイズを確認する必要があります。 'std :: vector :: size'が0の場合、' std :: vector :: data'の結果を逆参照することはできません。 'std :: vector :: data'は、ベクトルが空の場合、'&v [0] 'のような未定義の動作をしないので、優先されます。 –
何もチェックしないことをお勧めします。したがって、ダミーのポインタを取得する必要がありますが、size()が0の場合、そのダミーポインタは何も実行されません。フロント()はこのように動作しますか?少なくともリリースビルドでは? – TarmoPikaro