std :: count () в C ++ STL
std :: count () возвращает количество вхождений элемента в заданном диапазоне. Возвращает количество элементов в диапазоне [first, last), которые сравниваются равными val.
// Returns count of occurrences of value in
// range [begin, end]
int count(Iterator first, Iterator last, T &val)first, last : Input iterators to the initial and final positions of the sequence of elements.
val : Value to match
Сложность Это порядок сложности O (n). Сравнивает один раз каждый элемент с определенным значением.
Подсчет вхождений в массиве.
// C ++ программа для подсчета в C ++ STL для
// массив
#include <bits/stdc++.h>
using namespace std;
int n = sizeof (arr) / sizeof (arr[0]);
cout << «Number of times 3 appears : «
<< count(arr, arr + n, 3);
Подсчет вхождений в векторе.
// C ++ программа для подсчета в C ++ STL для
// вектор
#include <bits/stdc++.h>
using namespace std;
cout << «Number of times 3 appears : «
<< count(vect.begin(), vect.end(), 3);
Подсчет вхождений в строке.
// C ++ программа для подсчета в C ++ STL
// для строки
#include <bits/stdc++.h>
using namespace std;
string str = «geeksforgeeks» ;
cout << «Number of times ‘e’ appears : «
Эта статья предоставлена Джатин Гоял . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
LINQ в C#
Начиная с версии 3.5 в .NET Framework появился довольно интересный и полезный метод доступа к данным — LINQ. LINQ (Language Integrated Query) — это простой и достаточно удобный язык запросов к источнику данных в C# и других языках. Причем в качестве источника данных могут выступать, как обычные массивы или списки, так и XML-документы, наборы данных DataSet и т.д. Запросы в LINQ очень сильно напоминают запросы в SQL. В этой части мы рассмотрим основные моменты работы с LINQ в C# и научимся использовать основные возможности LINQ при работе с наборами данных,такими как массив или список.
Примеры использования LINQ в C#
Выбор из массива строк с использованием LINQ
Чтобы получить возможность работать с LINQ, в проекте необходимо подключить пространство имен System.Linq . Для того, чтобы разобраться с тем,что из себя представляет LINQ и как его использовать в своих проектах C# рассмотрим решение такой простой задачи: необходимо выбрать из массива строк все строки, длина которых больше пяти символов. Без использования LINQ мы бы написали примерно такой код:
C LINQ этот код можно сделать короче и выразительнее:
Как можно видеть, синтаксис запроса в LINQ очень сильно похож на SQL, хотя и имеет некоторые различия. При этом, наиболее простой запрос в LINQ выглядит следующим образом:
Если переводить запрос LINQ на обычный язык, но на нашем примере получится следующее:
«все элементы s из набора strings »
«у которых длина более 5»
Здесь в примере мы использовали неявно типизированную переменную ( res ), хотя, могли бы использовать и явный тип. Так как в качестве источника данных В качестве источника данных для LINQ может выступать любой объект, реализующий интерфейс IEnumerable , то переписать пример мы могли бы так:
Сортировка массива с использованием LINQ
Ещё один показательный пример — использование LINQ для сортировки данных, например, массива чисел. В разделе «Алгоритмы» представлено несколько алгоритмов, реализующих сортировку массива чисел. Например, рассмотрим код, реализующий сортировку выбором:
Это самый простой метод сортировки, однако, используя LINQ мы можем отсортировать массив буквально в одну строку:
массив будет отсортирован в порядке возрастания.
Аналогичным образом мы можем работать с любыми наборами данных, главное, чтобы в качестве набора выступал объект, реализующий интерфейс IEnumerable . Кроме SQL-подобного стиля LINQ также предоставляет нам в распоряжение такую возможность, как использование методов расширения, определенных для интерфейса IEnumerable .
Методы расширения LINQ
Когда вы подключаете в проект пространство имен System.Linq , то все объекты, реализующие интерфейс IEnumerable , автоматически «обрастают» методами расширения LINQ. По сути, методы расширения LINQ позволяют избавиться от SQL-подобного стиля в коде вашего проекта. Вот, например, как бы выглядел пример, представленный выше, если бы мы использовали методы расширения:
В качестве параметров, методы расширения принимаю обычно делегат или лямбда-выражение. Также, используя методы расширения мы можем расширить варианты использования LINQ, например, мы можем отфильтровать массив строк и вывести количество слов в выборке, используя вот такую последовательность методов расшения:
Наиболее часто используемые методы расширения LINQ представлены ниже:
- Select — определяет проекцию выбранных значений
- SelectMany — проецирует каждый элемент последовательности в объект IEnumerable<T> и объединяет результирующие последовательности в одну последовательность
- Where — определяет фильтр выборки
- OrderBy — упорядочивает элементы по возрастанию
- OrderByDescending — упорядочивает элементы по убыванию
- ThenBy — задает дополнительные критерии для упорядочивания элементов возрастанию
- ThenByDescending — задает дополнительные критерии для упорядочивания элементов по убыванию
- Join — соединяет две коллекции по определенному признаку
- GroupBy — группирует элементы по ключу
- ToLookup — группирует элементы по ключу, при этом все элементы добавляются в словарь
- GroupJoin — выполняет одновременно соединение коллекций и группировку элементов по ключу
- Reverse — располагает элементы в обратном порядке
- All — определяет, все ли элементы коллекции удовлетворяют определенному условию
- Any — определяет, удовлетворяет хотя бы один элемент коллекции определенному условию
- Contains — определяет, содержит ли коллекция определенный элемент
- Distinct — удаляет дублирующиеся элементы из коллекции
- Except — возвращает разность двух коллекций, то есть те элементы, которые создаются только в одной коллекции
- Union — объединяет две однородные коллекции
- Intersect — возвращает пересечение двух коллекций, то есть те элементы, которые встречаются в обоих коллекциях
- Count — подсчитывает количество элементов коллекции, которые удовлетворяют определенному условию
- Sum — подсчитывает суммучисловых значений в коллекции
- Average — подсчитывает среднее значение числовых значений в коллекции
- Min — находит минимальное значение
- Max — находит максимальное значение
- Take — выбирает определенное количество элементов
- Skip — пропускает определенное количество элементов
- TakeWhile — возвращает цепочку элементов последовательности, до тех пор, пока условие истинно
- SkipWhile — пропускает элементы в последовательности, пока они удовлетворяют заданному условию, и затем возвращает оставшиеся элементы
- Concat — объединяет две коллекции
- Zip — объединяет две коллекции в соответствии с определенным условием
- First — выбирает первый элемент коллекции
- FirstOrDefault — выбирает первый элемент коллекции или возвращает значение по умолчанию
- Single — выбирает единственный элемент коллекции, если коллекция содержит больше или меньше одного элемента, то генерируется исключение
- SingleOrDefault — выбирает единственный элемент коллекции или возвращает значение по умолчанию
- ElementAt — выбирает элемент последовательности по определенному индексу
- ElementAtOrDefault — выбирает элемент коллекции по определенному индексу или возвращает значение по умолчанию, если индекс вне допустимого диапазона
- Last — выбирает последний элемент коллекции
- LastOrDefault — выбирает последний элемент коллекции или возвращает значение по умолчанию
Об этих методах расширения LINQ более подробно в следующих статьях.
Итого
Использование возможностей LINQ в C# позволяет сделать ваш код более выразительным (понятным) для чтения и, одновременно, более лаконичным. В своих проектах вы можете использовать LINQ в SQL-стиле (что встречается довольно редко) или же использовать методы расширения, которые во многом повторяют операции выполняемые при SQL-подобном использовании LINQ, но и, при этом, упрощают использование LINQ, например, позволяя вычислять значения элементарных математических операций — подсчитывать средние значения, определять количество элементов выборки и так далее.
List<T>.Count Свойство
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает число элементов, содержащихся в интерфейсе List<T>.
Значение свойства
Число элементов, содержащихся в интерфейсе List<T>.
Реализации
Примеры
В следующем примере показано, как проверить емкость и количество объектов List<T> , содержащих простой бизнес-объект, иллюстрирует использование TrimExcess метода для удаления дополнительной емкости.
В следующем примере показано значение Count свойства в различных точках в жизненном цикле списка. После создания и заполнения списка и отображения Capacity его элементов отображаются и Count свойства. Эти свойства снова отображаются после TrimExcess вызова метода и снова после очистки содержимого списка.
Комментарии
Capacity — это количество элементов, которые List<T> могут храниться перед изменением размера. Count — это количество элементов, которые фактически находятся в элементе List<T>.
Capacity всегда больше или равно Count. При Count превышении при добавлении Capacity элементов емкость увеличивается путем автоматического перераспределения внутреннего массива перед копированием старых элементов и добавлением новых элементов.
Получение значения данного свойства является операцией порядка сложности O(1).