Home > Backend Development > C++ > C++ program to convert array to set (hash set)

C++ program to convert array to set (hash set)

PHPz
Release: 2023-09-16 09:01:02
forward
759 people have browsed it

C++ program to convert array to set (hash set)

Array is a data structure available in C that holds a sequential collection of elements of the same type. The size of the array is fixed but can be expanded or reduced as needed. It is important to think of an array as a collection of variables of the same type, even if it is used to store a collection of data. A set (or in this case, an unordered set) is a container that stores elements of a specific data type in an arbitrary order. A hash table is used to implement unordered_set, where the keys are hashed into a hash table index to help ensure that insertions are always random.

Conversion from an array to an unordered set can be accomplished using various methods that we discuss further.

Insert array elements into the collection one by one

The easiest way to convert an array into an unordered set is to use a for loop and insert each array element individually into the unordered set. Next we look at the syntax and algorithm.

grammar

int ip[] = <integer array>;
   unordered_set<int> op;
   for( int i : ip) {
      op.insert(i);
}
Copy after login

algorithm

  • Get input in integer array ip.
  • Define an unordered_set operation.
  • For each element i in the array ip, execute -
    • Insert IP into op.
  • Display the content of op.

Example

#include <bits/stdc++.h>
using namespace std;

template <size_t N> unordered_set<int> solve( int (&ip)[N] )
{
   //an unorderd set is declared
   unordered_set<int> op;
   
   //each element is inserted using insert function
   for(int i : ip) {
      op.insert(i);
   }
   return op;
}
int main()
{
   int ip[] = {50, 80, 90, 40, 30};
   unordered_set<int> op = solve(ip);

   //display the input
   cout<< "The input array is: ";
   for(int i : ip) {
      cout<< i << " ";
   }

   //display the output
   cout<< "\nThe output set is: ";
   for(int j : op) {
      cout<< j << " ";
   }
   return 0;
}
Copy after login

Output

The input array is: 50 80 90 40 30 
The output set is: 30 40 90 50 80
Copy after login

We declare an integer array ip and iterate over all elements in the array. We declare the output set as op and insert each element into the unordered set using the insertion function available in the container. The result we can see is an unordered set of values ​​that are also present in the array.

Construct a collection using the range constructor

You can also create unordered_set using its range constructor. The range constructor takes two inputs; the starting pointer of the input array and the size of the input array plus the starting pointer.

grammar

int ip[] = ;
int n = sizeof(ip) / sizeof(ip[0]);
std::unordered_set op(ip, ip + n);
Copy after login

algorithm

  • Get input in integer array ip.
  • Use the sizeof operator to determine the size of the input array.
  • Assign the size of the array to the integer variable n.
  • Construct an unordered_set operation using the array starting pointer and array size.
  • Display the content of op.

Example

#include <bits/stdc++.h>
using namespace std;

template <size_t N> unordered_set<int> solve(int (&ip)[N]) {
   //the size is determined of the input array
   int n = sizeof(ip) / sizeof(ip[0]);

   //output set is constructed using range constructor
   std::unordered_set<int> op(ip, ip + n);
   return op;
}

int main()
{
   int ip[] = {30, 20, 50, 10, 70};
   unordered_set<int> op = solve(ip);

   //display the input
   cout<< "The input array is: ";
   for(int i : ip) {
      cout<< i << " ";
   }  

   //display the output
   cout<< "\nThe output set is: ";
   for(int j : op) {
      cout<< j << " ";
   }
   return 0;
}
Copy after login

Output

The input array is: 30 20 50 10 70 
The output set is: 70 10 50 20 30
Copy after login

In this example, we have to determine the size of the array using the sizeof function. us Assign size to variable n and create unordered_set using pointers ip and ip n operate.

in conclusion

unordered_set can contain any type of data. To change the data type it holds, we have to change the data type contained in . The container supports primitive and user-defined types well. In practice, unordered_set works quite well, generally providing constant time search operations. All operations on unordered_set typically take constant time O(1), although in the worst case they may take up to linear time O(n), depending on the internal hash function.

The above is the detailed content of C++ program to convert array to set (hash set). For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:tutorialspoint.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template