'left' is std :: vector of std :: set для каждого элемента в левом (который установлен), я пытаюсь выполнить операцию объединения в другой набор, итерации по 'left' ,set union не работает
Почему следующий код не работает. Я пытаюсь сделать набор объединений двух множеств.
std::vector<std::set<int> > left(num_nodes);
//Both leftv and left are not empty ....there is some code here which fills them.
std::set<int> leftv, dummy;
for(std::set<int>::iterator u = leftv.begin(); u != leftv.end() ;u++){
dummy.insert(v); //v is some integer
std::set_union (left[*u].begin(), left[*u].end(), dummy.begin(), dummy.end(), left[*u].begin());
dummy.clear();
}
Ошибка /usr/include/c++/4.3/bits/stl_algo.h:5078: ошибка: назначение только для чтения местоположения «__result.std :: _ Rb_tree_const_iterator < _Tp> :: оператора * с _Tp = int '
Не могли бы Вы уточнить, что ** ** не работает. Ошибки компилятора? Runtime crash? –
Ваша проблема не в союзе, а в том, как вы пытаетесь итерации. Что вы пытаетесь объединить вместе? (левый только что должен быть объединением всех множеств слева?) – IdeaHat
Если это все соответствующий код, то 'leftv' пуст, когда цикл' for' достигнут, так что вам нечего перебирать. – Angew