vector
変数を関数に渡すにはどうすればよいですか?私はvector
のchar*
と、引数としてchar *
をとる関数を持っています。 vector
変数をこの関数に渡すにはどうすればよいですか?ベクトル変数を関数に渡すにはどうすればよいですか?
答えて
char *引数をとる関数がある場合、char *の1つだけをベクトルに渡すことができます。
std::vector<char*> v;
char buf[] = "hello world";
v.push_back(buf);
the_function(v[0]);
あなたは、ベクター内の各メンバーの機能を呼び出したい場合は、単にループ:
for (std::vector<char*>::iterator i = v.begin(); i != v.end(); ++i)
the_function(*i);
EDIT:たとえば、以下のコメントをもとに、あなたが実際に機能を書きたいこと引数としてベクトルを受け入れ...試してみてください。
void the_function(const std::vector<char*>& v)
{
// can access v in here, e.g. to print...
std::cout << "[ (" << v.size() << ") ";
for (std::vector<char*>::iterator i = v.begin(); i != v.end(); ++i)
std::cout << *i << ' ';
std::cout << " ]";
}
をあなたが呼び出したい既存の機能を持っている、とあなたはその引数リストを変更しない場合は...
void TV_ttf_add_row(const char*, const char*, const void*);
...そして、あなたはベクトルが十分な要素を持っていることを知っていると言う:
assert(v.size() >= 3); // optional check...
TV_ttf_add_row(v[0], v[1], v[2]);
または
if (v.size() >= 3)
TV_ttf_add_row(v[0], v[1], v[2]);
か、あなたがしたい場合は、十分ながない場合、例外がスローされますv
の要素、次に
try
{
TV_ttf_add_row(v.at(0), v.at(1), v.at(2));
}
catch (const std::exception& e)
{
std::cerr << "caught exception: " << e.what() << '\n';
}
彼はtry/catchブロックは、単一の関数呼び出しを囲む必要はありません - ちょうどv.at()
呼び出しがtry
ブロック内のどこかにあるか、ブロック内から直接的または間接的に呼び出される関数である限り)。あなたはまた、そのインデックスでベクトル要素にアクセスすることができます
または 'std :: for_each(v.begin()、v.end()、the_function); ' –
@Chris:この特定のケースでは素晴らしいですが、初心者が最初に簡単な反復を学ぶことは、一般的に実行する必要のあるタスクに幅広く適用できます。 –
お返事ありがとうTony。エラー: 'std :: vector
:あなたはCの配列を受け取る関数にはstd ::ベクトルの内容を渡す必要がある場合
void f(char* s)
{
// do something with s
}
std::vector<char*> char_vect;
size_t len = char_vect.size();
for (size_t i=0; i<len; ++i)
f(char_vect[i]);
を、あなたはのアドレスを取ることができますベクトルの最初の要素:
void someCfunc(char *);
std::vector<char *> somevec;
// set up the vector ... then:
someCfunc(&somevec[0]);
もつとも - あなたがここに混ぜC文字列規則を取得しないように注意してください! std::vector
は、文字列の末尾に'\0'
を自動的に付加しません。手動で行う必要があります。単なるバッファであれば、ベクトルのサイズを別々に渡す必要があります。また、ベクトルにデータを戻している場合、C関数はベクトルを独自に拡張することはできません。したがって、ベクトルが事前に十分に大きいことを確認することはあなた次第です。
これはstd::vector
にのみ適用され、他のSTLコンテナには適用されないことにも注意してください。
- 1. 関数内の変数の値をGoogleマップ関数に渡すにはどうすればよいですか?
- 2. 変数と関数を警告関数に渡すにはどうすればよいですか?
- 3. MATLABで関数の引数としてベクトルを渡すにはどうすればよいですか?
- 4. ベクトル変数を関数にどのように渡しますか?
- 5. Cの複数の変数を関数からmainに渡すにはどうすればよいですか?
- 6. C++/CLIで関数変数を参照によって渡すにはどうすればよいですか?
- 7. 選択値に基づいて関数に変数を渡すにはどうすればよいですか?
- 8. 変数を複数の関数で渡すのを避けるにはどうすればよいですか?
- 9. ある関数から別の関数に引数を渡すにはどうすればよいですか?
- 10. addEventListenerで渡されたリスナー関数に引数を渡すにはどうすればよいですか?
- 11. コールバックに関数名を渡すにはどうすればよいですか?
- 12. メンバー関数をクラスコンストラクタに渡すにはどうすればよいですか?
- 13. 関数にコードを渡すにはどうすればよいですか?
- 14. jqueryのポスト関数からクレームコントローラに変数を渡すにはどうすればよいですか?
- 15. JavaScript関数でコールバックを渡すにはどうすればよいですか?
- 16. LoaderBackground()に変数を渡すにはどうすればよいですか?
- 17. 変数をURLに渡すにはどうすればよいですか?
- 18. 変数をディレクティブに渡すにはどうすればよいですか?
- 19. バレリーナワーカーに変数を渡すにはどうすればよいですか?
- 20. この変数にこの関数を渡すにはどうすればよいですか?
- 21. ダグ内の関数にds変数を渡すにはどうすればよいですか?
- 22. 揮発性変数をcの関数に渡すにはどうすればよいですか?
- 23. 変数をEvent.COMPLETE関数に渡すにはどうすればよいですか?
- 24. HTMLスクリプトファイルの変数をgoogle appsスクリプトのjavascript関数に渡すにはどうすればよいですか?
- 25. ユーザ定義型変数を関数にパラメータとして渡すにはどうすればよいですか?
- 26. クラス変数の名前を関数に渡すにはどうすればよいですか?
- 27. クラスメンバ(変数?)を関数に渡すにはどうすればよいですか?
- 28. カートでカスタム変数を渡すにはどうすればよいですか?
- 29. カスタムコントロールで変数を渡すにはどうすればよいですか?
- 30. javascript関数のclickでこの変数を渡すにはどうすればよいですか?
最初のもの、すなわちstd :: vactor v; –
Balaji