Намек недопонят, может, шаблоны параметризуются как-то косноязычно? Что за map, который индексирует int значения по ключу set? Операция сравнения между set предусмотрена?
В данном случае это map из superedges в узлы, сводящие эти superedges в одно ребро, но это не суть. Суть в том, что ничего вручную писать не надо, everything just works. Но выглядит устрашающе; интересно как бы подобное выглядело не на "ассемблере с макропроцессором", а на труъ языке высокого уровня.
There is 3 question marks on this page yet and all mine. What question do you imply? How it looks, should it be written in higher level language? I would probably try to compose something like that with database-related language, like Clipper which I have not used for years but still, can be used to reflect relations between sets of data, etc. One statement to definite the table, another to index it... combination of those.
A question doesn't have to be explicitly marked by punctuation, it can be implied in a dependent clause. :) Is there a way to do it without invoking the Database demon?
Yes, with arrays and dictionaries, I guess. Most of higher level languages have those, though the code would be much less declarative and scary as hell. And those people try to prevent us from inserting index finger to our noses. :-p
Язык инструмент (точнее ящик с инструментами, но неважно). У всякой профессии свой ящик. Слесарь супротив столяра, C++ супротив Scala супротив Clojure и т.д.
При вставке в map происходит копирование сета. В зависимости от того, как он был получен, оно может быть не нужное. Например, если у вас один сет, который вы модифицируете и временами вставляете, то все хорошо. А если для создания сета его уже пришлось скопировать перед модификацией, то второе копирование не нужно. Плюс, если set сделан как persistent data structure (такие есть в clojure и Scala), то разные сеты разделяют не измененные части, так что нигде не требуется O(N) копирование.
В С++ ради избежания копирования можно помочь компилятору, использовав std::move. Надеюсь, что вскоре компиляторы станут умнее, и в этом отпадет необходимость.
А потом наступил тысяча девятьсот семнадцатый год.
Это был очень памятный год в нашей жизни, в тот год произошло важнейшее событие, повлиявшее на всю нашу дальнейшую жизнь: мы стали заниматься тригонометрическими рядами ...
[Error: Irreparable invalid markup ('<set<int>') in entry. Owner must fix manually. Raw contents below.]
Меня до сих пор интригует вот эта часть: map<set<int>, int>.
Тут весь код представлен? Поиск в сете, как таковой, не важен? Итерируем сет? А чего он тогда не list? Просто в векторе сверху ищем по индексам, которые значения в векторе? Это ж для Дийкстры.
Все читали относительно свежего Страустрапа. Но он не пытался отрицать полезность list для своих применений. В данном случае, точно, вместо set и list, и тем более, vector, скорее, лучше.
Notionally По идее, ребра, входящие в узел, образуют множество (или мультимножество, если допускаются кратные ребра), так зачем какие-то подозрительные представления для множества без нужды выдумывать?
no subject
Date: 2014-06-28 07:26 am (UTC)no subject
Date: 2014-06-28 07:33 am (UTC)no subject
Date: 2014-06-28 07:38 am (UTC)no subject
Date: 2014-06-28 07:40 am (UTC)no subject
Date: 2014-06-28 07:49 am (UTC)no subject
Date: 2014-06-28 07:56 am (UTC)no subject
Date: 2014-06-28 08:02 am (UTC)no subject
Date: 2014-06-28 08:04 am (UTC)no subject
Date: 2014-06-28 03:38 pm (UTC)Боюсь, у нас тут не все так оптимистично.
no subject
Date: 2014-06-28 03:52 pm (UTC)no subject
Date: 2014-06-28 04:05 pm (UTC)no subject
Date: 2014-06-28 04:04 pm (UTC)no subject
Date: 2014-06-28 04:30 pm (UTC)no subject
Date: 2014-06-29 04:20 am (UTC)no subject
Date: 2014-06-28 04:03 pm (UTC)На труъ языке, может, и типы не обязательно явно указывать.
no subject
Date: 2014-06-28 04:53 pm (UTC)no subject
Date: 2014-06-28 05:21 pm (UTC)no subject
Date: 2014-06-28 07:48 pm (UTC)no subject
Date: 2014-06-28 07:57 pm (UTC)Плюс, если set сделан как persistent data structure (такие есть в clojure и Scala), то разные сеты разделяют не измененные части, так что нигде не требуется O(N) копирование.
no subject
Date: 2014-06-28 08:06 pm (UTC)no subject
Date: 2014-06-28 11:53 am (UTC)no subject
Date: 2014-06-28 01:28 pm (UTC)(© не помню, кто)
no subject
Date: 2014-06-28 02:35 pm (UTC)А потом наступил тысяча девятьсот семнадцатый год.
Это был очень памятный год в нашей жизни, в тот год произошло важнейшее
событие, повлиявшее на всю нашу дальнейшую жизнь: мы стали заниматься
тригонометрическими рядами ...
no subject
Date: 2014-06-28 04:05 pm (UTC)no subject
Date: 2014-06-28 07:49 pm (UTC)no subject
Date: 2014-06-28 04:09 pm (UTC)Тут весь код представлен? Поиск в сете, как таковой, не важен? Итерируем сет? А чего он тогда не list? Просто в векторе сверху ищем по индексам, которые значения в векторе? Это ж для Дийкстры.
no subject
Date: 2014-06-28 04:51 pm (UTC)no subject
Date: 2014-06-28 04:54 pm (UTC)no subject
Date: 2014-06-28 04:56 pm (UTC)list же вообще признак конца 70ых. the default container is vector.
no subject
Date: 2014-06-29 05:37 am (UTC)no subject
Date: 2014-06-28 07:51 pm (UTC)NotionallyПо идее, ребра, входящие в узел, образуют множество (или мультимножество, если допускаются кратные ребра), так зачем какие-то подозрительные представления для множества без нужды выдумывать?no subject
Date: 2014-06-29 05:38 am (UTC)no subject
Date: 2014-06-29 05:42 am (UTC)