На этом шаге мы рассмотрим немодифицирующие операции над отображениями и мультиотображениями.
Отображения и мультиотображения поддерживают обычный набор операций для получения размера контейнера и сравнения элементов (таблица 1).
Операция | Описание |
---|---|
c.size() | Возвращает фактическое количество элементов |
c.empty() | Проверяет, пуст ли контейнер (эквивалент size()==0, но иногда выполняется быстрее) |
c.max_size() | Возвращает максимально возможное количество элементов |
c1 == с2 | Проверяет равенство c1 и с2 |
c1 != с2 | Проверяет неравенство c1 и с2 (эквивалент !(c1==c2)) |
c1 < с2 | Проверяет, что c1 меньше с2 |
c1 > с2 | Проверяет, что c1 больше с2 (эквивалент c2<с1) |
с1<= с2 | Проверяет, что с1 не больше с2 (эквивалент !(c2<с1)) |
с1 >= с2 | Проверяет, что c1 не меньше с2 (эквивалент !(c1<с2)) |
Операции сравнения определены только для однотипных контейнеров. Это означает совпадение как типов элементов, так и критерия сортировки; в противном случае происходит ошибка компиляции. Пример:
std::map<float,std::string> c1; // Критерий сортировки: std::less<> std::map<float,std::string,std::greater<float> > c2; if (cl == c2) { // ОШИБКА: разные типы . . . . }
Отношение "меньше/больше" между контейнерами проверяется по лексикографическому критерию. Для сравнения контейнеров разных типов (с разными критериями сортировки) необходимо использовать определенные алгоритмы, которые будут рассмотрены позднее.
На следующем шаге мы рассмотрим специальные операции поиска.