std::vector
をforループ内で再利用したいと思います。しかし、私はforループの各反復ステップのためにベクトルを空にする必要があります。サイズを変更せずにstd :: vectorを空にします
質問:ベクトルを最も効率的な方法で容量を変更せずにすばやく空にするにはどうすればよいですか?私がこれまでに使用したもの
は
std::vector<int> myVec;
for(int i=0; i<A_BIG_NUMBER; ++i) {
std::vector<T>().swap(myVec);
myVec.reserve(STANDARD_MAXIMUM);
/// .. doing business
}
乾杯です!
ソリューション:回答を
おかげで、ここではそれは私が(チェック)に実装する方法である:
#include <vector>
#include <iostream>
int main() {
int n = 10;
std::vector<int> myVec;
myVec.reserve(n);
for(int j=0; j<3; ++j) {
myVec.clear();
for(int i=0; i<n; ++i) {
myVec.push_back(i);
}
for(int i=0; i<myVec.size(); ++i) {
std::cout << i << ": " << myVec[i] << std::endl;
}
}
return 0;
}
EDIT:はpush_back
にoperator[]
から変更しました。
選択されたソリューションが間違っているだけでなく、質問にも意味がありません。ベクトルのサイズを一定にしたい場合は、それをクリアしないでください。既存の要素の上に上書きするか、各要素を個別にリセットするだけです。 –
@BoPersson:うん、自分を騙した。あまりにも多くを得ることを望んでいた..私はそれを私の質問から切り取った。 – ezdazuzena
'algorithm'ライブラリから' remove'を探していましたか? –