私は自分のクラスと std::vector でいくつかの作業をしようとしています。次の問題に遭遇しました=
これが私のコードです:
class A
{
private:
........
public:
vector<int>* ret_vec();
};
vector<int>* A::ret_vec()
{
vector<int> vec; // vec is declared as a local variable
......
return &vec;
}
int main()
{
.....
vector<int>* vec = A.ret_vec(); // size of vec is 0 !!!
}
コードでわかるように、vec
invector<int>* A::ret_vec()
はローカル変数として宣言されており、in のポインターに代入するとmain
、のサイズvec
は 0 になります。
したがって、代わりに次の方法を使用しました。
class A
{
private:
vector<int> vec; // vec is declared as a member variable
public:
vector<int>* ret_vec();
};
vector<int>* A::ret_vec()
{
......
return &vec;
}
int main()
{
.....
vector<int>* vec = A.ret_vec(); // size of vec is ok
}
vec
これで、メンバー変数として宣言したので、 でローカル ポインターに代入するとmain
、そのサイズは予想どおりになりました。
これはなぜですか?どうもありがとう。
================================================== ======== 編集:
最初に自分自身を明確に説明しておらず、申し訳ありません。私は大規模なデータセットを扱ってvec
おり、時間のパフォーマンスが現在の優先事項です。したがって、値による戻りベクトルはオプションではないのではないかと心配しています。