Size: a a a

IT KPI C/C++ ХВ (не UB)

2020 September 27

V

Vsevolod in IT KPI C/C++ ХВ (не UB)
Aleksey Belkevich
Да, именно в этом
Был на проекте где ребята своим механизмом исключений пользовались, ещё написанным в бородатых 90х. Там всё было слегка по своему, а сейчас уже поддерживается нативно языком
Вот только исключения относительно дорогие и поэтому свой способ, скорее всего, будет лучше
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Aleksey Belkevich
Не все секции кода под нагрузкой, где-то резонно ошибки отлавливать чем-то более скоростным
.
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
У каждого свой опыт, я делюсь своим
источник

V

Vsevolod in IT KPI C/C++ ХВ (не UB)
Aleksey Belkevich
У каждого свой опыт, я делюсь своим
Да, любой альтернативный реальный опыт всегда интересен
Если бы мне приходилось работать только с stl, исключения стали б лучшим вариантом, от них просто некуда было бы деться
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Если что я писал про опыт написания небольшого пет-проджекта (>10к строк) которое строилось на исключениях где-то на уровне архитектуры
STL, его альтернативы или любые другие библиотеки у которых интерфейс тоже работает с исключениями не рассматривал
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Там всё очень специфично
источник
2020 September 28

q

qwerty in IT KPI C/C++ ХВ (не UB)
ребят, продолжаем дудосить.
Мне нужно как-то придумать структуру данных, которая будет хранить такие мапы std::map <std::string, std::pair<std::string, T>>. Как мне лучше всего это сделать? Нужно обратить внимание на то, что second.second шаблонный параметр и описать класс для таких объектов не получится в силу того, что мы не сможем хранить указатели на объекты различных типов, как решать данную проблему?
источник

q

qwerty in IT KPI C/C++ ХВ (не UB)
просто наша структуру данных должна уметь отвечать на запросы по типу: get(map.first, map.second.first), типа возвращать значение шаблонного параметра, если ключи совпадают. Я придумал, чтобы сделать second.second не шаблонным, а строкой и тупо выдавать строку, но это не решение данной проблемы
источник

V

Vsevolod in IT KPI C/C++ ХВ (не UB)
qwerty
ребят, продолжаем дудосить.
Мне нужно как-то придумать структуру данных, которая будет хранить такие мапы std::map <std::string, std::pair<std::string, T>>. Как мне лучше всего это сделать? Нужно обратить внимание на то, что second.second шаблонный параметр и описать класс для таких объектов не получится в силу того, что мы не сможем хранить указатели на объекты различных типов, как решать данную проблему?
> не получится
почему? классы тоже умеют в шаблоны

> указатели на объекты различных типов
можно, если унаследовать их всех от одного базового

> get(map.first, map.second.first)
именно оба сразу? тогда тут пара как-то странно выглядит
а если оба стринга кидать в ключ?
источник

q

qwerty in IT KPI C/C++ ХВ (не UB)
Vsevolod
> не получится
почему? классы тоже умеют в шаблоны

> указатели на объекты различных типов
можно, если унаследовать их всех от одного базового

> get(map.first, map.second.first)
именно оба сразу? тогда тут пара как-то странно выглядит
а если оба стринга кидать в ключ?
в мапе ключ - стринг, значение - пара <стринг, Т>
источник

q

qwerty in IT KPI C/C++ ХВ (не UB)
Vsevolod
> не получится
почему? классы тоже умеют в шаблоны

> указатели на объекты различных типов
можно, если унаследовать их всех от одного базового

> get(map.first, map.second.first)
именно оба сразу? тогда тут пара как-то странно выглядит
а если оба стринга кидать в ключ?
типа в базовом классе создать именно 4 мапа под каждый тип данных(int, double, string, char)?, хотя не, какое-то говно
источник

V

Vsevolod in IT KPI C/C++ ХВ (не UB)
qwerty
в мапе ключ - стринг, значение - пара <стринг, Т>
тогда зачем гет с ключом и значением?
источник

q

qwerty in IT KPI C/C++ ХВ (не UB)
типа есть секции, в которых расположены аргументы со своими значениями
источник

q

qwerty in IT KPI C/C++ ХВ (не UB)
мы вызываем гет от определенной секции к определенному аргументу и выдаем значение этого аргумента
источник

V

Vsevolod in IT KPI C/C++ ХВ (не UB)
qwerty
типа есть секции, в которых расположены аргументы со своими значениями
но ведь ключ уникален
поэтому get(map.first, map.second.first) = get(map.first)
или там просто много мап?
источник

q

qwerty in IT KPI C/C++ ХВ (не UB)
да, там много секций
источник

q

qwerty in IT KPI C/C++ ХВ (не UB)
источник

q

qwerty in IT KPI C/C++ ХВ (не UB)
просто нужно как-то спроектировать эту херь,
[] - секции, дальше идут аргументы и значения после знака "="
источник

q

qwerty in IT KPI C/C++ ХВ (не UB)
нужно придумать структуру, которая будет хранить все это дело, при этом, чтобы она могла отвечать на запросы по типу get[sectionName][argName]
источник

q

qwerty in IT KPI C/C++ ХВ (не UB)
qwerty
просто нужно как-то спроектировать эту херь,
[] - секции, дальше идут аргументы и значения после знака "="
причем значения аргументов шаблонного типа, можно, кнш их хранить как строки и выдавать пользователю строку, но это не решает проблему
источник