int main(){
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(vec[0]);
for (auto it = vec.begin(); it != vec.end(); it++) {
std::cout << *it << std::endl;
}
return 0;
}
これは[1、2、1]を出力します。これは、ベクトルがvec [0]のコピーを作成して戻しているためです。しかし、私は[2、1]のような出力をしたいと思いますし、push_back()を使わずにこれを達成してからerase()を使わなければならないのか不思議でした。要素をベクトルの最後に移動するにはどうすればよいですか?
目的:ベクトルがそれに応じて調整される間に、ベクトルの要素を最後まで移動できるようにしたいので、5番目の要素を最後まで移動すると、元の5番目の要素位置が上に移動するので、新しい5番目の位置は元の6番目の位置に要素を持ちます。
"ベクトル内の要素を最後に移動する"は、後者が意味するものであれば、 "参照を元に戻す"とは大きく異なります。 –
代わりにリストを使うほうがいいですか? – skypjack
@skypjackそう思わない。削除/挿入ポイントを見つけるコストは支配的です。プリフェッチャはノードベースのデータ構造を好まない。 –