Сортировка std :: list с использованием std :: set - PullRequest
0 голосов
/ 22 января 2010

Я добавляю два разных элемента в std :: list и std :: set и хочу, чтобы std :: list сортировался в том же порядке, что и std :: set. Один из способов, который я попробовал, - это когда элемент добавляется в std :: set, найти этот элемент, затем получить индекс этого элемента, используя std :: distance (begin, found), и затем вставить элемент в этот индекс в std :: list. есть ли другой способ?

Ответы [ 2 ]

4 голосов
/ 22 января 2010

Вы должны использовать std :: map , с данными, которые вы ввели в качестве ключа, и данными, которые вы поместили в список как значение.

Таким образом, элементы вашего списка будут упорядочены.

0 голосов
/ 22 января 2010

Это слишком сложный способ! На самом деле std :: set реализован как двоичное дерево и использует std :: less для сортировки (по умолчанию). Также это обеспечивает «стабильный» итератор, это означает, что итератор, возвращаемый std :: set :: insert, будет действителен, пока элемент не будет явно удален Таким образом, вы можете поместить только что вставленный итератор в std :: list. И мудрый стих - std :: list также имеет стабильный итератор, так что вы можете помещать элементы в список, но размещать итераторы для установки. В последнем случае просто переопределите std :: less

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...