никто не может запретить
Можно.
Можно, но нужно ли под вашу задачу - большой вопрос.
Когда Вы делаете Мап<стринг, Вектор<стринг>> Вы точно уверены что Вам нужен именно Мап, а не Сет?
Можно конечно, но тогда стоит сразу отложить деньги на ритуальные услуги
А как std::set<T> поможет замeнить std::map<std::string, std::vector<std::string>>?
я пока типо не знаю о сетах
Разница между Сет и Мап - это очень просто. Сет - это контейнер объектов у которых ключ внутри. Типа Person{ .Name, ...}; .Name - это ключ внутри объекта и для такого контейнера достаточно Сет. Мап - это контейнер объектов ключ для которых задаётся извне. Типа тот же Person{}, но ключ для него ГУИД. Внутри этого Person{} никакого ГУИД нету, но мы делаем контейнер Мап<ГУИД, Персон} Андерстенд?
Андерстент я знаю что такое сет ) просто задачу надо мапой по условию 😅
Тогда, если ключ типа strnig .Name внутри элемента, и напрашивается Сет, но по какой+то причине от тебя требуется Мап, то.. Мап<reference_wrspper<string>, Person>
И везде у ключей нужна сортировка?
Да все задачку решил и мои вариант был ошибочный можно было легче. Напряг головушку
Хоронить не будут, просто кремируют?
Кстати Сет это вроде как мап в реализации но просто значение равно ключу.
Не совсем. Чтобы построить Сет Вы передаёте ему просто компаратор Ваших объектов и для ключа Сет отдельно память не выделяет - все необходимое есть в самом объекте. Мап же отдельно выделяет память для ключа - у Мап ключ не в полях объекта, а снаружи. Фактически Мап - это Сет для пары Ключ+Объект. Я заостряю на этом внимание потому что нередкая ошибка строить Мап<Name, Person{.Name,...}> В этом случае Мап послушно ещё раз выделит память для ключа .Name, хотя он уже и так в объекте присутствует. Тут нужен Сет.
Не совсем понял что за компаратор я передаю в конструктор сета.
Сет это контейнер, который сортирует элементы. Чтобы их сортировать нужно уметь сравнивать объекты. Компаратор(дословно сравниватель) знает как это делать
Да спасибо понял.
struct Person{ string Name; ... }; auto compare_less = [](const Person& a, const Person& b) -> bool{ return a.compare(b) <0; };
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
Всё ещё неправильно :( Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
либо же выбрать весь текст -> Ctrl + Shift + M
От моей Нокии коньрол ещё в начале 2000-х отвалился...
Обсуждают сегодня