Home >Backend Development >C++ >C++ program to convert list to set

C++ program to convert list to set

WBOY
WBOYforward
2023-09-08 09:53:031518browse

C++ program to convert list to set

Lists in C are containers like vectors, but the implementation of lists is based on double Linked lists compared to array implementations of vectors. The list generally does not include The elements in the list are distributed in consecutive positions memory. Lists provide the same constant time operation everywhere in them, which is the main Use list features. On the other hand, a collection is a container that contains unique values Some type and all elements are sorted in ascending order. These two containers are Different, but there are multiple ways to convert a list into a set. We discuss the method Details are as follows.

Simple method

The simplest and most naive way is to define two different containers; one of the list type The other is a set type, which copies each element of the list into a collection.

grammar

list<int> myList;
set<int> mySet;
for ( int const &val: myList ) {
   mySet.insert(val);
}

algorithm

  • Get input in the list.
  • Iterate over each element in the list and insert them into the collection.
  • Display the contents of the collection.

Example

#include <iostream>
#include <set>
#include <list>
using namespace std;
int main(){
   
   //initializing the list
   list<int> myList = { 10, 30, 65, 98, 76, 44, 32, 73, 81, 29 };
   set<int> mySet;
   cout<< "The list contents are:" << endl;
   
   //displaying the list contents
   for ( int const &val: myList ) {
      cout << val << ' ';
   }
   
   //copying the elements of the list
   for ( int const &val: myList ) {
      mySet.insert(val);
   }
   cout << "\nThe set contents are:" << endl;
   for ( int const &val: mySet ) {
      cout << val << ' ';
   }
   return 0;
}

Output

The list contents are:
10 30 65 98 76 44 32 73 81 29 
The set contents are:
10 29 30 32 44 65 73 76 81 98 

Use range constructor

The start and end pointers of the list must be provided as parameters of the constructor Use range constructors when building collections.

grammar

list<int> myList;
set<int> mySet(begin(myList), end(myList));

algorithm

  • Get input in a list.

  • When creating a collection, pass the start and end pointers of the list to the collection's range constructor.

  • Display the contents of the collection.

Example

#include <iostream>
#include <set>
#include <list>
using namespace std;
int main(){
   
   //initializing the list
   list<int> myList = { 30, 70, 56, 89, 67, 44, 23, 37, 18, 92 };
   
   //using the range constructor
   set<int> mySet(begin(myList), end(myList));
   cout<< "The list contents are:" << endl;
   
   //displaying the list contents
   for ( int const &val: myList ) {
      cout << val << ' ';
   }
   cout << "\nThe set contents are:" << endl;
   for ( int const &val: mySet ) {
      cout << val << ' ';
   }
   return 0;
}

Output

The list contents are:
30 70 56 89 67 44 23 37 18 92 
The set contents are:
18 23 30 37 44 56 67 70 89 92 

Use the copy function

The copy function in C allows copying data from one container to another. need to use Copy function, start and end pointers of the list must be passed as parameters to functions and pointers to collections and the beginning of collections within collections Inserter function.

grammar

list<int> myList;
set<int> mySet;
copy(begin(myList), end(myList), inserter(mySet, begin(mySet)));

algorithm

  • Get input in a list.

  • Define a new collection.

  • Pass the start and end pointers of the list as well as the collection and the pointer to the beginning of the collection in the inserter function as arguments to the copy function.

  • Display the contents of the collection.

Example

#include <iostream>
#include <set>
#include <list>
using namespace std;
int main(){
   
   //initializing the list
   list<int> myList = { 33, 74, 52, 84, 65, 47, 28, 39, 13, 96 };
   set<int> mySet;
   
   //using the copy function
   copy(begin(myList), end(myList), inserter(mySet, begin(mySet)));
   cout<< "The list contents are:" << endl;
   
   //displaying the list contents
   for ( int const &val: myList ) {
      cout << val << ' ';
   }
   cout << "\nThe set contents are:" << endl;
   for ( int const &val: mySet ) {
      cout << val << ' ';
   }
   return 0;
}

Output

The list contents are:
33 74 52 84 65 47 28 39 13 96 
The set contents are:
13 28 33 39 47 52 65 74 84 96 

in conclusion

When we use sets, we cannot add or store duplicate elements to the set, but Allows duplicate elements to be stored in a list or array-like data structure. have In some cases, it is preferred to use a set instead of a list. These conversions The techniques we've seen before can really help with this.

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

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete