All streams
Search
Write a publication
Pull to refresh
19
0
Митя @dnomaid

User

Send message
браво)
но по сути у вас пока только кучка специализаций заменена на mpl::map
кстати, это
pair< int_< 0 >, int >,
я бы все равно заменил на макрос с говорящим названием, чтобы было нагляднее тому, кто будет добавлять новые константы

далее для того, чтобы привязать метод к константе, скорее всего придется совать в этот map структуры вроде num_getter
>> const header_t header = request.header();
>> const int status = header.statusCode();

Согласен, это еще лучше, но реализовывать такое я бы стал точно так же.

>> — Также, помоему вы немного не верно толкуете идиому trait.
>> Сверьтесь с сылками отсюда: en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Traits

Я был в этих ссылках.
Да, классические traits зависят от типа, а не от константы, но суть от этого не меняется — вычисление типа (типов) на этапе компиляции.
Если сделать это в run-time, то тип придется приводить ручками, а это нехорошо.
А как это сделать с помощью mpl?
А есть ли там функции для работы с HTTP? Я хотел посмотреть, как они устроены, но сходу не нашел.
А memcmp нельзя избирательно сделать по полям a_, b_ и d_, игнорируя c_, или вообще в другом порядке старшинства полей.
COM вообще не из C++, это двоичный стандарт. Удобнее всего с ним работать из VB или Jscript через Automation, как мне кажется.
А в C++ для работы с ним есть ATL.
Его писали на plain C, там не очень-то разгуляешься.
Да, в комментариях ниже написал.
Я считаю, что лучше написать один раз как следует, чем постоянно тащить за собой кучу boilerplate-кода.
Ну, это лишняя морока. И не всегда целесообразно определять конструктор. Его наличие, например, не позволит писать так:
data a = { 1, 2, 3, 4 } ;
Вполне корректная, я считаю. Доля прочего кода при одних и тех же данных постоянна, меняется лишь время сравнения. Точное отношение скоростей сравнения проверка не даст, но выявить победителя позволит точно.
И потом, где еще используется такое массовое сравнение? Обычно при сортировке и поиске.

Времена 10 000 000 сравнений, с:
0.168, 0.232, 0.233
Что подтверждает.
точно заполняются? Мне кажется, в промежутках может лежать любой неинициализированный мусор.
А этот способ, кстати, по скорости эквивалентен «хорошему» и «безумному», время около 3.7с. Быстрее всех работает c if'ами, как в начале статьи.
Проверил.
Классический способ быстрее, как и ожидалось, время около 2.8с. «Хороший» и «безумный» способы примерно равноценны, время около 3.7с, но «безумный» обычно быстрее на 0.01с.
От количества полей (2, 3, 4) зависит незначительно.
Структура из интов, размер массива 10 000 000 элементов, сортировка std::sort, данные в каждом подходе одинаковые, компилятор VS2008, Release.
разъясните, пожалуйста, как все решается с помощью std::map
2

Information

Rating
Does not participate
Registered
Activity