Аналитика Telegram-канала
Подписчики
4 196
Охват за 24 ч
292
ER за 24 ч
6,96%
Публикаций
2 614
Динамика подписчиков
7 дней
30 дней
6 месяцев
Больше
1 ноя4 ноя7 ноя
Показаны последние 7 дней
Больше истории →
Охваты публикаций
04.1104.1105.1105.1106.1106.11
67
Средний охват
79
Лучший результат
Показаны 6 публикаций — последние в канале
Больше статистики →
Упоминания
878
Упоминаний
21
Из них репостов
408
Каналов
6
Упоминаний за 90 дней
0
Из них репостов
2
Каналов за 90 дней
Последние посты
3 из 2 614 2 из 2 614🤔 Что лежит в основе работы unordered_set, unordered_map и set, map?
1. Set и Map: основаны на сбалансированных бинарных деревьях, обычно красно-чёрных. Они поддерживают упорядоченность данных.
2. Unordered_set и Unordered_map: основаны на хеш-таблицах, обеспечивающих быструю вставку, удаление и поиск.
3. Основной принцип различия — структура данных: деревья для упорядоченности, хеш-таблицы для скорости.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу знаний
ещё
79
0
6 ноя, 19:11
🤔 Можно использовать в контексте нескольких потоков Shared_ptr и потокобезопасный он или нет?
Использование shared_ptr в многопоточном контексте требует определённой осторожности, поскольку он сам по себе имеет ограниченную потокобезопасность. Рассмотрим подробнее, что это значит и как можно безопасно использовать его в многопоточной среде.
🚩Потокобезопасность
🟠Безопасное копирование и удаление
Стандарт C++ гарантирует, что операции копирования и удаления shared_ptr являются потокобезопасными в том смысле, что вы можете безопасно копировать и удалять разные экземпляры shared_ptr из разных потоков, даже если они указывают на один и тот же объект.
🟠Счётчик ссылок
Модификации счётчика ссылок в нем (т.е. увеличение и уменьшение) являются атомарными операциями, что означает, что при изменении счётчика из разных потоков состояние счётчика останется консистентным и корректным.
🟠Ограничения потокобезопасности
Не рекомендуется изменять сам объект, на который указывает shared_ptr, из нескольких потоков без дополнительной синхронизации, так как shared_ptr не предоставляет потокобезопасность для доступа к объекту. Если несколько потоков изменяют один и тот же shared_ptr (не копии), например, присваивают ему новые значения или обнуляют его, это должно синхронизироваться, так как стандартная библиотека не гарантирует безопасность таких операций без внешней синхронизации.
🚩Рекомендации для использования в многопоточной среде
🟠Избегайте разделять один и тот же `shared_ptr` между потоками
Лучше дать каждому потоку собственную копию shared_ptr, что позволяет избежать конфликтов на запись.
🟠Синхронизируйте доступ к общему shared_ptr
Если несколько потоков должны иметь доступ к одному и тому же shared_ptr, используйте мьютексы или другие механизмы синхронизации для защиты его при записи.
🟠Рассмотрите использование std::atomic<std::shared_ptr<T>> для C++20 и выше
Эта оболочка предоставляет потокобезопасные операции на shared_ptr без необходимости явной синхронизации при изменении указателя.
Ставь 👍 и забирай 📚 Базу знаний
ещё
51
0
6 ноя, 12:05
🤔 Сложность операций с vector и list
Для vector добавление элемента в конец имеет сложность O(1) в среднем, но при перераспределении памяти — O(n). Удаление и вставка в произвольное место занимают O(n), так как элементы необходимо сдвигать. Для list добавление и удаление имеют сложность O(1), но доступ по индексу — O(n), так как требуется последовательный обход элементов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу знаний
ещё
72
1
5 ноя, 19:11
Похожие Telegram-каналы
C/C++ | Тесты
C/C++ Jobs | Вакансии
C/C++ | LeetCode
Продолжить анализ этого канала
- История роста подписчиков
- Просмотры и охваты публикаций
- Кто упоминает канал и кого упоминает он
- Похожие каналы и подбор для рекламы
Открыть аналитику
Демо до 14 дней