Заблокирован
|
|||||||||||
1 | |||||||||||
Std::set, как добавить собственную проверку уникальности для класса?28.08.2014, 11:05. Показов 3944. Ответов 28
Метки нет (Все метки)
Сразу к делу
P.S.: так - то ясен пень не собирается Добавлено через 4 минуты думал вставить лямбду, тоже не работает
0
|
28.08.2014, 11:05 | |
Ответы с готовыми решениями:
28
Как правильно добавить в Set объекты своего класса? Как сделать проверку уникальности наименования у справочника 1С:Предприятие 8.3? STL std::set, std::pair, std::make_pair Конструктор для std::set |
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
28.08.2014, 11:11 | 2 |
Потому что нужен тип, а не объект.
Добавлено через 3 минуты По умолчанию компаратор - std::less<T>, следовательно, должен быть оператор <.
1
|
Заблокирован
|
||||||
28.08.2014, 11:13 [ТС] | 3 | |||||
И ещё вопрос, как без функтора написать такую лямбду прямо в объявление set, чтоб код не плодить ?
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
28.08.2014, 11:15 | 4 |
1
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
28.08.2014, 11:20 | 6 |
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
28.08.2014, 11:21 | 8 |
1
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
28.08.2014, 11:40 | 10 |
Сообщение было отмечено -NEURON- как решение
Решение
1. С точки зрения интерфейса в классе появляется единственно возможный способ сортировки его объектов. По факту критериев сортировки может быть N, и я не вижу повода добавлять ограничений.
2. Утверждение "документ А меньше документа Б" не может однозначно определить отношение порядка между этими объектами, всегда требуется уточнение: по какому признаку? Как пытались и почему не вышло?
1
|
Заблокирован
|
||||||
28.08.2014, 11:47 [ТС] | 11 | |||||
А... сам валенок, всё работает:
0
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
||||||
28.08.2014, 11:52 | 12 | |||||
Как вариант:
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
28.08.2014, 12:05 | 14 |
-NEURON-, Это из стандарта С++11.
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
28.08.2014, 12:20 | 17 | ||||||||||
Сообщение было отмечено -NEURON- как решение
Решение
-NEURON-, Определяет тип выражения на этапе компиляции.
Где например может быть полезна:
В С++14 можно будет писать вообще такой код:
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
28.08.2014, 12:34 | 20 | |||||
-NEURON-, Объясняю.
Возвращаемый тип функции plus определяется по сумме ее аргументов, при этом на самом деле оператор + вызван не будет да и decltype не будет использовать сами переменные, а просто найдет подходящую сигнатуру (скажем так,
1
|
28.08.2014, 12:34 | |
28.08.2014, 12:34 | |
Помогаю со студенческими работами здесь
20
итераторами для std::set Перегруженный оператор () для std::set Сделать проверку уникальности ввода данных Шаблон как тип контейнера std::set Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |