Алгоритмы работы с массивами в C ++ STL (all_of, any_of, none_of, copy_n и iota)

Опубликовано: 1 Января, 2022

Начиная с 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.