Функциональный член count()
из контейнера используется для проверки, если ключ присутствует, ведя к неэффективному коду
Этот дефект повышен когда функциональный член count()
из этих контейнеров называется для проверки, если ключ присутствует:
std::multimap
std::multiset
std::unordered_multiset
std::unordered_multimap
При проверке включения вы преобразуете выход count()
контейнера метод к
bool
, или сравните его с любым 0
или 1
.
count
функция предыдущих контейнеров выполняет линейный поиск и находит все экземпляры ключа в контейнере. Когда проверка, присутствует ли ключ в контейнере, выполняя исчерпывающий поиск каждого экземпляра ключа, является ненужной и неэффективной.
Чтобы зафиксировать этот дефект, вызовите член find
или contains
функция контейнера при проверке на включение. Эти функции прекращают искать ключ, как только один экземпляр ключа найден. Эти функции проверяют включение более эффективно по сравнению с count
функция.
Повышения производительности могут варьироваться на основе компилятора, реализации библиотеки и среды, которую вы используете.
Группа: Производительность |
Язык: C++ |
Значение по умолчанию: Off |
Синтаксис командной строки:
EXPENSIVE_CONTAINER_COUNT |
Удар: Средняя |