- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
// https://habr.com/ru/post/440388/
// Интервалы: грядущая эволюция C++
// Давайте теперь рассмотрим следующую задачу: имеется вектор, необходимо удалить
// из него все повторяющиеся элементы. В рамках текущего стандарта мы решали бы её так:
std::vector<T> vec=...;
std::sort( vec.begin(), vec.end() );
vec.erase( std::unique( vec.begin(), vec.end() ), vec.end() );
// При этом мы указываем имя вектора аж 6 раз! Однако, используя концепцию интервалов
// (объединив итераторы на начало и конец вектора в один объект), можно написать в разы проще, указав искомый вектор лишь единожды:
tc::unique_inplace( tc::sort(vec) );
//... Че, серьезно? Я так тоже могу:
// Однако, используя сишный препроцессор™, можно написать в разы проще, указав искомый вектор лишь единожды:
#define DELETE_DUPS(x) do{ std::sort( x.begin(), x.end() ); x.erase( x::unique( x.begin(), x.end() ), x.end() );}while(0)
DELETE_DUPS(vec);
j123123 15.02.2019 18:41 # +1
Вообще, херня какая-то. Нахер придумывать столько херни?
j123123 15.02.2019 18:53 # 0
Даже особые костыли для не самого свежего GCC, чтобы это шаблоноговно заработало. В лучших традициях, так сказать
1024-- 15.02.2019 19:04 # 0
Тут не надо ничего возвращать; пердолиться с константными питухами тоже не надо; никаких шаблонов нет (т.е. x - это какой-то обычный тип, нет выражений вида Pitux<int>::pitux = 5, в которых какой-то Pitux имеет kind сложнее, чем "*"). Вроде достаточно самостоятельно написать template<typename T> void unique(T& pitux); и пользоватья.
j123123 15.02.2019 19:06 # 0
OCETuHCKuu_nemyx 22.02.2019 23:17 # 0
Hu3KoypoBHeBblunemyx 23.02.2019 08:05 # 0
guest8 23.02.2019 14:03 # −999
6E3yMHblu_nemyx 23.02.2019 17:39 # 0
bormand 15.02.2019 19:07 # 0
j123123 15.02.2019 19:35 # 0
bormand 15.02.2019 19:47 # 0
j123123 16.02.2019 06:09 # 0
bormand 16.02.2019 08:33 # 0
j123123 16.02.2019 10:38 # +2
bormand 16.02.2019 10:41 # 0
Arbatan_Pokrovan 15.02.2019 21:38 # +1
guest8 15.02.2019 21:40 # −999
O4epegHou_nemyx 15.02.2019 19:45 # 0
Elvenfighter 20.02.2019 22:10 # +4
О, бже, ты открыл мне глаза, теперь я тоже могу писать свой код!
3oJloTou_nemyx 23.02.2019 18:10 # 0
guest8 21.02.2019 04:31 # −999
6E3yMHblu_nemyx 21.02.2019 14:19 # 0
OCETuHCKuu_nemyx 22.02.2019 23:14 # 0
6E3yMHblu_nemyx 23.02.2019 00:13 # 0
http://govnokod.ru/25335#comment456237
Можно перевести по аналогии.
3oJloTou_xyz 23.02.2019 00:36 # 0
CnEPMOBOP 23.02.2019 21:58 # 0