Size: a a a

2020 July 20

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
И write неблокирующий
источник

DP

Denis Paukaev in supapro.cxx
tamtakoe
Ага. Именно так. Но <string, int> это же не какая-то константа, это всего лишь описание составного типа, дженерика, шаблона или как тут они называются. Где-то внутри это T1 и T2 и никто не мешает объявить свой тип mymap<string, int>, который будет помимо string и int содержать еще что-то
Решил бы лучше проблемы дизайна того что ты делаешь
источник

DP

Denis Paukaev in supapro.cxx
Тогда не надо эти костыли будет городить
источник

DP

Denis Paukaev in supapro.cxx
Пока выглядит как супер треш
источник

t

tamtakoe in supapro.cxx
Побитый Кирпич
struct OutputData {
   std::map<string, int> map;
   MyType extra_field;
};

Я сделал то что ты хотел
Неа) Это просто тип, содержащий мапу и какое-то поле, а мне нужен тип унаследованный от мапы, которому я могу присвоить любой объект стандартной мапы MyMap mymap = (map<string, int>)someMap
источник

ПК

Побитый Кирпич... in supapro.cxx
tamtakoe
Неа) Это просто тип, содержащий мапу и какое-то поле, а мне нужен тип унаследованный от мапы, которому я могу присвоить любой объект стандартной мапы MyMap mymap = (map<string, int>)someMap
Зачем тебе тут наследование?
источник

DP

Denis Paukaev in supapro.cxx
Есть мнение что когда есть наследование от стандартных контейнеров скорее всего творится что-то неладное )
источник

DP

Denis Paukaev in supapro.cxx
tamtakoe
Неа) Это просто тип, содержащий мапу и какое-то поле, а мне нужен тип унаследованный от мапы, которому я могу присвоить любой объект стандартной мапы MyMap mymap = (map<string, int>)someMap
Ну и сделай класс который внутри хранит мапу и что угодно, и у него оператор= для мапы
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
tamtakoe
Неа) Это просто тип, содержащий мапу и какое-то поле, а мне нужен тип унаследованный от мапы, которому я могу присвоить любой объект стандартной мапы MyMap mymap = (map<string, int>)someMap
Это твой личный проект?
источник

t

tamtakoe in supapro.cxx
Побитый Кирпич
Зачем тебе тут наследование?
Чтобы работало копирование. Основная цель, почему хочу так сделать это выполнить что-то такое:
MyMap mymap = (map<string, int>)originalMap
mymap["extra"] = myDequeEtc;
Но судя, по комментариям, наверное проще тупо в цикле все поля перебрать и скопировать ручками... Медленно, наверное это будет, мапы на перебор не очень работаю...
источник

ПК

Побитый Кирпич... in supapro.cxx
tamtakoe
Чтобы работало копирование. Основная цель, почему хочу так сделать это выполнить что-то такое:
MyMap mymap = (map<string, int>)originalMap
mymap["extra"] = myDequeEtc;
Но судя, по комментариям, наверное проще тупо в цикле все поля перебрать и скопировать ручками... Медленно, наверное это будет, мапы на перебор не очень работаю...
MyMap mymap = originalMap
mymap.extra = myDequeEtc;
источник

ПК

Побитый Кирпич... in supapro.cxx
Пойдёт?
источник

t

tamtakoe in supapro.cxx
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
Это твой личный проект?
Нет..., но можно сказать, что личный - изучаю как убыстрить ноду. Изучу - буду на работе внедрять)
источник

t

tamtakoe in supapro.cxx
А перебор будет работать?
for (pair : mymap) ...
Кажется, что не будет
источник

ПК

Побитый Кирпич... in supapro.cxx
tamtakoe
А перебор будет работать?
for (pair : mymap) ...
Кажется, что не будет
Если ты просто хочешь добавлять любое значение в мапу, то тебе просто надо:
using MyMap = std::map<std::string, std::any>;
источник

ПК

Побитый Кирпич... in supapro.cxx
И перебор будет работать
источник

ПК

Побитый Кирпич... in supapro.cxx
По сути сделаешь object из js-а, только там хэш таблица а не мапа
источник

t

tamtakoe in supapro.cxx
Denis Paukaev
Ну и сделай класс который внутри хранит мапу и что угодно, и у него оператор= для мапы
Как вариант. Но тогда и итератор переопределять нужно и еще что-то. Почти как свою мапу написать
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Побитый Кирпич
И перебор будет работать
И наследование не нужно
источник

t

tamtakoe in supapro.cxx
Побитый Кирпич
Если ты просто хочешь добавлять любое значение в мапу, то тебе просто надо:
using MyMap = std::map<std::string, std::any>;
Впервые слышу про тип any в std
источник