Related Articles
Array algorithms in C++ STL (all_of, any_of, none_of, copy_n and iota)
• Difficulty Level : Easy
• Last Updated : 19 Apr, 2018

From C++11 onwards, some new and interesting algorithms are added in STL of C++. These algorithms operate on an array and are useful in saving time during coding and hence useful in competitive programming as well.

all_of()

This function operates on whole range of array elements and can save time to run a loop to check each elements one by one. It checks for a given property on every element and returns true when each element in range satisfies specified property, else returns false.

 `// C++ code to demonstrate working of all_of()``#include``#include // 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;`` ` `}`

Output:

```All are not positive elements
```

In the above code, -6 being a negative element negates the condition and returns false.

any_of()

This function checks for a given range if there’s even one element satisfying a given property mentioned in function. Returns true if at least one element satisfies the property else returns false.

 `// C++ code to demonstrate working of any_of()``#include``#include // 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;`` ` `}`

Output:

```There exists a negative element
```

In above code, -6 makes the condition positive.

none_of()

This function returns true if none of elements satisfies the given condition else returns false.

 `// C++ code to demonstrate working of none_of()``#include``#include // 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;``}`

Output:

```No negative elements
```

Since all elements are positive, the function returns true.

copy_n()

copy_n() copies one array elements to new array. This type of copy creates a deep copy of array. This function takes 3 arguments, source array name, size of array and the target array name.

 `// C++ code to demonstrate working of copy_n()``#include``#include // 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;`` ` `}`

Output:

```The new array after copying is : 1 2 3 4 5 6
```

In the above code, the elements of ar are copied in ar1 using copy_n()

iota()

This function is used to assign continuous values to array. This function accepts 3 arguments, the array name, size, and the starting number.

 `// C++ code to demonstrate working of iota()``#include``#include // 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;`` ` `}`

Output:

```The new array after assigning values is : 20 21 22 23 24 25
```

In the above code, continuous values are assigned to array using iota().

This article is contributed by Manjeet Singh .If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.