Что вы просите, так это то, что vec3
будет пересечением двух других. Jalf демонстрирует, как заполнить vec3
с помощью функции std::set_intersection
от the <algorithm>
header. Но помните, что для заданных функций для работы, векторы должны быть отсортированы.
Затем вы хотите vec1
и vec2
быть разница между собой и vec3
. В множестве обозначений:
Вы можете использовать std::set_difference
функцию для этого, но вы не можете использовать его, чтобы изменить векторы на месте. Вам нужно будет вычислить другой вектор, чтобы удерживать разницу:
std::vector<foo> temp;
std::set_difference(vec1.begin(), vec1.end(),
vec3.begin(), vec3.end(),
std::back_inserter(temp));
vec1 = temp;
temp.clear();
std::set_difference(vec2.begin(), vec2.end(),
vec3.begin(), vec3.end(),
std::back_inserter(temp));
vec2 = temp;
Какой тип элементов? Являются ли они сопоставимыми? Есть только 4 элемента? –
да, они сопоставимы, а не только 4 элемента – yesraaj
http://stackoverflow.com/questions/421573/best-way-to-extract-a-subvector-from-a-vector – 2012-10-26 19:45:35