があり、元のベクトルの最後のn個の要素のみを含むstd::vector
別の要素が必要です。std::vector
1つずつ挿入するベクトル全体のループに加えて、これを行うためのよりクリーンな方法はありますか?
13857 次
2 に答える
27
int n = 5;
std::vector<int> x = ...;
std::vector<int> y(x.end() - n, x.end())
もちろん、x.size()<nの場合、これはクラッシュして燃えます
少し詳しく説明すると、std::vector
(ほとんどの標準ライブラリコンテナと同様に)イテレータのペアを受け取るコンストラクタがあります。最初のイテレータから2番目のイテレータまでのすべてのアイテムでベクトルを埋めます。
于 2012-07-30T16:05:13.183 に答える
1
copyVector
2つのイテレータコンストラクタを使用して直接構築できます。
std::vector<int> original = ...;
std::vector<int>::iterator start = std::next(original.begin(), M);
std::vector<int> copyVector(start, original.end());
または、std::vector
の割り当てメソッドを使用します。
std::vector<int>::iterator start = std::next(original.begin(), M);
std::vector<int> copyVector = ... ;
...
copyVector.assign(start, original.end());
ここM
で、はとから計算されoriginal.size()
ますn
。
于 2012-07-30T16:07:33.877 に答える