ベクトルからchar配列を取得する最も簡単な方法は何ですか?
私がしている方法は、ベクトルの開始と終了のイテレータを使用して初期化された文字列を取得し、この文字列から.c_str()を取得することです。他に効率的な方法はありますか?
これは、Scott MeyersのEffective STLで説明されています。&vec[0]
を実行すると、std::vector
の最初の要素のアドレスを取得できます。標準では、ベクトルが連続したメモリでは、このようなことを行うことができます。
// some function
void doSomething(char *cptr, int n)
{
}
// in your code
std::vector<char> chars;
if (!chars.empty())
{
doSomething(&chars[0], chars.size());
}
編集:コメントから(casablancaに感謝)
std::vector<char> chars;
char* char_arr = chars.data(); // &chars[0]