同じ量の要素を持つベクトルにする必要があります。私は条件に基づいて最初のベクトルの要素を削除したいと思いますが、同じ位置にある要素を2番目のベクトルから削除したいと思います。例えば最初のベクトルの要素に基づいて2つのstd ::ベクトルから要素を削除します
は、ここでは二つのベクトルです:
std::vector<std::string> first = {"one", "two", "one", "three"}
std::vector<double> second = {15.18, 14.2, 2.3, 153.3}
そして、私が欲しいの要素が「1」である場合の条件に基づいて削除することです。最終的な結果は次のとおりです。
std::vector<std::string> first = {"two", "three"}
std::vector<double> second = {14.2, 153.3}
私が使用してfirst
から要素を削除することができます。
bool pred(std::string name) {
return name == "one";
}
void main() {
std::vector<std::string> first = {"one", "two", "one", "three"}
first.erase(first.begin(), first.end(), pred);
}
をしかし、私は同様に第二のベクターから要素を削除する方法を認識していないです。
両方のベクトルに1つのインデックスを使用する必要がある、インデックス付きのforループを使用できます。この方法で、同じインデックスの両方のベクトルから消去します –
これを行う1つの方法は、Boostのzipイテレータを使用することです - http://stackoverflow.com/a/26659114/241631 – Praetorian