У меня есть набор, объявленный с моей собственной функцией comp:
set<int, my_comp> my_set;
Функция сравнения использует некоторые данные, хранящиеся в другом месте, чтобы решить, какое целое число больше. Если указанные данные изменяются, меняется и порядок элементов множества.
Как set справляется с этим? Если я знаю, что относительное положение int могло измениться, нужно ли мне удалять и снова вставлять его?
Подробности: в частности, my_comp использует целые числа в качестве индексов для доступа к вектору и сравнивает значения, содержащиеся в векторе. Указанные значения обязательно изменятся.
std::set
может судить, даже самое незначительное изменение порядка может привести к перебалансировке дерева до корневого узла. Пользовательское красно-черное дерево может сэкономить время, не перезагружая память старого узла, но это все. - person MSalters   schedule 02.10.2013