Алгоритмы работы с массивами в C ++ STL (all_of, any_of, none_of, copy_n и iota)
Начиная с C ++ 11, в STL C ++ добавляются некоторые новые интересные алгоритмы. Эти алгоритмы работают с массивом и полезны для экономии времени во время кодирования и, следовательно, также полезны в конкурентном программировании.
все()
Эта функция работает со всем диапазоном элементов массива и может сэкономить время на запуск цикла для проверки каждого элемента один за другим. Он проверяет заданное свойство для каждого элемента и возвращает истину, если каждый элемент в диапазоне удовлетворяет указанному свойству, иначе возвращает ложь.
// C++ code to demonstrate working of all_of() #include<iostream> #include<algorithm> // for all_of() using namespace std; int main() { // Initializing array int ar[6] = {1, 2, 3, 4, 5, -6}; // Checking if all elements are positive all_of(ar, ar+6, []( int x) { return x>0; })? cout << "All are positive elements" : cout << "All are not positive elements" ; return 0; } |
Выход:
Все не положительные элементы
В приведенном выше коде -6, являясь отрицательным элементом, отрицает условие и возвращает false.
любой из()
Эта функция проверяет заданный диапазон, есть ли хотя бы один элемент, удовлетворяющий заданному свойству, указанному в функции. Возвращает true, если хотя бы один элемент удовлетворяет свойству, иначе возвращает false.
// C++ code to demonstrate working of any_of() #include<iostream> #include<algorithm> // for any_of() using namespace std; int main() { // Initializing array int ar[6] = {1, 2, 3, 4, 5, -6}; // Checking if any element is negative any_of(ar, ar+6, []( int x){ return x<0; })? cout << "There exists a negative element" : cout << "All are positive elements" ; return 0; } |
Выход:
Существует отрицательный элемент
В приведенном выше коде -6 делает условие положительным.
ни один из()
Эта функция возвращает истину, если ни один из элементов не удовлетворяет заданному условию, иначе возвращает ложь.
// C++ code to demonstrate working of none_of() #include<iostream> #include<algorithm> // for none_of() using namespace std; int main() { // Initializing array int ar[6] = {1, 2, 3, 4, 5, 6}; // Checking if no element is negative none_of(ar, ar+6, []( int x){ return x<0; })? cout << "No negative elements" : cout << "There are negative elements" ; return 0; } |
Выход:
Без отрицательных элементов
Поскольку все элементы положительны, функция возвращает true.
copy_n ()
copy_n () копирует один элемент массива в новый массив. Этот тип копии создает глубокую копию массива. Эта функция принимает 3 аргумента, имя исходного массива, размер массива и имя целевого массива.
// C++ code to demonstrate working of copy_n() #include<iostream> #include<algorithm> // for copy_n() using namespace std; int main() { // Initializing array int ar[6] = {1, 2, 3, 4, 5, 6}; // Declaring second array int ar1[6]; // Using copy_n() to copy contents copy_n(ar, 6, ar1); // Displaying the copied array cout << "The new array after copying is : " ; for ( int i=0; i<6 ; i++) cout << ar1[i] << " " ; return 0; } |
Выход:
Новый массив после копирования: 1 2 3 4 5 6
В приведенном выше коде элементы ar копируются в ar1 с помощью copy_n ()
йота()
Эта функция используется для присвоения массиву непрерывных значений. Эта функция принимает 3 аргумента: имя массива, размер и начальный номер.
// C++ code to demonstrate working of iota() #include<iostream> #include<numeric> // for iota() using namespace std; int main() { // Initializing array with 0 values int ar[6] = {0}; // Using iota() to assign values iota(ar, ar+6, 20); // Displaying the new array cout << "The new array after assigning values is : " ; for ( int i=0; i<6 ; i++) cout << ar[i] << " " ; return 0; } |
Выход:
Новый массив после присвоения значений: 20 21 22 23 24 25
В приведенном выше коде непрерывные значения присваиваются массиву с помощью iota ().
Автором этой статьи является Манджит Сингх. Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью метода влиятельности. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.
Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по доступной для студентов цене и будьте готовы к работе в отрасли. Получите все важные математические концепции для соревновательного программирования с курсом Essential Maths for CP по доступной для студентов цене.
Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.