Я немного озадачен, вот что я сделал
vec
имеет 5 элементовs
имеет 3 элемента.vec_out
Проблема начинается —
5. Сделал их пересечение и сохранил в vec_out
, не дает результата, то есть ничего не пересекается
6. Изменен результат для записи в новый вектор v
, показывает правильный результат, т.е. пересекаются 2 элемента
Итак, я хотел бы знать, почему не повторное использование vec_out
работать для выяснения set_intersection
(это 5-й аргумент для set_intersection)?
Есть намеки?
Вот код
vector<int> vec(5);
vector<int> s(3);
vector<int> vec_out(10);
vector<int>::iterator itr;
vec[0]=3;
vec[1]=4;
vec[2]=4;
vec[3]=14;
vec[4]=42;s[0]=14;
s[1]=42;
s[2]=442;
set_union(vec.begin(), vec.end(), s.begin(), s.end(), vec_out.begin());
cout<<"union\n";
for(itr = vec_out.begin(); itr != vec_out.end(); itr++)
cout << " " << *itr;
cout<<endl;
std::vector<int> v(10); // Using a new vector works fine, and gives result
// THIS BELOW LINE IS NOT WORKING
//itr=set_intersection(vec.begin(), vec.end(), s.begin(), s.end(), vec_out.begin());
itr=set_intersection(vec.begin(), vec.end(), s.begin(), s.end(), v.begin());
v.resize(itr - v.begin());
cout<<"intersection\n";
for(itr = v.begin(); itr != v.end(); itr++)
cout << " " << *itr;
К вашему сведению: я правильно выполняю итерацию по ожидаемому вектору, никаких проблем с отображением, т. Е. Я выполнял итерацию по vec_out, когда пытался выполнить шаг 5.
Может быть, это потому, что вы забыли заменить v на vec_out в конце вашего кода. Этот код работает правильно (14 42):
std::vector<int> v(10); // Using a new vector works fine, and gives result
// THIS BELOW LINE IS NOT WORKING
itr=set_intersection(vec.begin(), vec.end(), s.begin(), s.end(), vec_out.begin()>);
/* itr=set_intersection(vec.begin(), vec.end(), s.begin(), s.end(), v.begin()); >*/
vec_out.resize(itr - vec_out.begin());
cout<<"intersection\n";
for(itr = vec_out.begin(); itr != vec_out.end(); itr++)
cout << " " << *itr;
Других решений пока нет …