変数として、
vector<int> vint(10) ;
と定義しておいて、何かの値で初期化し、
例えば、次のような
int func(int* cint) { return 0; }
や
int func(int cint[10]) { return 0; }
と定義されている関数に渡したいのですが、
何か簡潔な方法はありませんか?
単純にわたそうとすると、
vector<int>型から、const int* 型に変換できません、な感じに言われてしまいます。
例えば、新たに
int cint* = new int[vint.size()]
と宣言して、その中にforループで値をコピーして、それを渡してもいいのですが、
もっと何か簡単な方法があれば幸いです。
vector<int>を引数として、intの静的配列として私たい
Re: vector<int>を引数として、intの静的配列として私たい
ふつうに
func(&vint[0]);
とわたしてダメですか?
func(&vint[0]);
とわたしてダメですか?
Re: vector<int>を引数として、intの静的配列として私たい
vectorで確保した領域は配列のようにメモリ上に連続して並んでいるので、
配列を要求する関数に渡すときは、下のようにデータの先頭のアドレスを渡します。
参考URL http://www.geocities.jp/ky_webid/cpp/library/002.html
配列を要求する関数に渡すときは、下のようにデータの先頭のアドレスを渡します。
#include <vector>
int func(int* cint) { return 0; }
int main(void)
{
vector<int> vint(10);
func(&vint[0]); //先頭データのアドレスを渡す
return 0;
}
Re: vector<int>を引数として、intの静的配列として私たい
ありがとうございます!助かりました。
.data()って、単純なアドレスだったのですね。
vint.data()[1] という書き方が出来ることにびっくりです。
&vint[0]
の発想もなく、&vintしか思いつきませんでしたね。
ありがとうございました。
.data()って、単純なアドレスだったのですね。
vint.data()[1] という書き方が出来ることにびっくりです。
&vint[0]
の発想もなく、&vintしか思いつきませんでしたね。
ありがとうございました。