А как работает set_intersection c multiset?
std::multiset<float> tmp;
std::multiset<float> setDepthsT( vecDepthsK.begin(), vecDepthsK.end() ); // с повторениями
std::set_intersection(
setDepthsK.begin(), setDepthsK.end(), // multiset, повторения
setDepthsT.begin(), setDepthsT.end(), // multiset
std::inserter(tmp, tmp.begin())
);
setDepthsK=tmp; // multiset
Надо бы что бы повторяющиеся ключи остались...
Ещё вопрос как оптимизировать это для пересечения нескольких множеств что бы обойтись без временного множества set и не перекладывать элементы туда-сюда...
MSVC++2010...
Здравствуйте, shestero, Вы писали:
S>А как работает set_intersection c multiset?
S>Надо бы что бы повторяющиеся ключи остались...
[set.intersection]/5 Remarks: If [first1, last1) contains m elements that are equivalent to each other and [first2, last2) contains n elements that are equivalent to them, the first min(m, n) elements shall be copied from the first range to the output range, in order.
S>Ещё вопрос как оптимизировать это для пересечения нескольких множеств что бы обойтись без временного множества set и не перекладывать элементы туда-сюда...
Написать собственный алгоритм.