2016-03-25 7 views
-2

ベクトル内の値を見つけて、その値とその後ろにあるすべての値を含む新しいベクトルを作成します。ベクトル内の値を見つけ、その位置からサブベクトルを抽出する

例:私はvec = {10, 20, 30, 40, 50}を持っています。私は30を見つけて、サブベクトル{30, 40, 50}を取得したいと思います。

私は

vector<int> vec = {10, 20, 30, 40, 50, 60}; 
std::vector<int>::iterator it; 
it = find (vec.begin(), vec.end(), 30); 
vector<int> newvec; 
copy(it, vec.end, newvec); 

または

copy(vec.begin()+it, vec.end(), newvec); 

をしようとしたが、それを表示するコンパイラエラーまたはプログラムがクラッシュのどちらか。

+0

'コピー(それ、vec.end()、newvec.begin());' –

+0

それは(vec.endだ)コピーで.... – DimChtz

答えて

1

割り当てられていない場所にコピーしようとしました。

std::vectorのコンストラクタを使用して、2つのInputIteratorを取り、範囲のコピーを作成できます。

はこれを試してみてください:

vector<int> vec = {10, 20, 30, 40, 50, 60}; 
std::vector<int>::iterator it; 
it = find (vec.begin(), vec.end(), 30); 
vector<int> newvec(it, vec.end()); 
関連する問題