Set of vectors in C++
In this post, you will understand the meaning and implementation of a set of vectors in C++.
Let us start by understanding the meaning of containers.
Containers: Containers are classes that store data and objects.
- Sequence containers: array, vectors, list, etc.
- Container adaptors: stack, queue, priority_queue, etc.
- Associative containers: sets, map, multiset, multimap, etc
Set: It is a type of associative container in which each element is unique i.e. duplicates are not allowed. An element inside a set cannot be modified but an element can be deleted or inserted.
- Ordered Set: Follows an ordering pattern -> Descending(Default) or Ascending
- Unordered Set: Does not follow any order and the elements are randomly distributed.
Vectors: Vectors are similar to a dynamic array as they automatically get reshaped or resized along with insertion or deletion of elements. The elements of a vector are stored in contiguous memory units.
Set of Vectors
Let us take a simple example of printing the set of vectors in C++.
Printing set of vectors
To be able to use the sets, you have to include the function in your C++ program using :
#include <set>
Now let us define a function that will print our vectors :
void print_vector(vector<int> v) { for(int i=0; i<(int)v.size(); i++) std::cout << '\t' << v[i]; std::cout << "\n"; }
Now let us dive into our main() function:
Declaration of the set of Vectors can be done in the following manner :
set< vector<data_type> > ;
For our program, let us use:
set <vector<int>>;
Let us now define our vectors :
vector<int> vec_1{ 12, 13, 25, 26 }; vector<int> vec_2{ 10, 11, 12 }; vector<int> vec_3{ 5, 22, 44, 12, 14, 11, 13 }; vector<int> vec_4{ 10, 11, 12 }; vector<int> vec_5{ 12, 13, 25, 26 };
set_of_vectors.insert(vec_1); set_of_vectors.insert(vec_2); set_of_vectors.insert(vec_3); set_of_vectors.insert(vec_4); set_of_vectors.insert(vec_5);
This will insert our vectors into our set.
Now, let us print out our set of vectors:
set< std::vector<int> >::iterator itr; for(itr=set_of_vectors.begin(); itr!=set_of_vectors.end(); itr++) print_vector(*itr);
Let us take a look at the complete C++ program:
#include <iostream> #include <vector> #include <set> using namespace std; void print_vector(vector<int> v) { for(int i=0; i<(int)v.size(); i++) std::cout << '\t' << v[i]; std::cout << "\n"; } int main() { set <vector<int>> set_of_vectors; vector<int> vec_1{ 12, 13, 25, 26 }; vector<int> vec_2{ 10, 11, 12 }; vector<int> vec_3{ 5, 22, 44, 12, 14, 11, 13 }; vector<int> vec_4{ 10, 11, 12 }; vector<int> vec_5{ 12, 13, 25, 26 }; set_of_vectors.insert(vec_1); set_of_vectors.insert(vec_2); set_of_vectors.insert(vec_3); set_of_vectors.insert(vec_4); set_of_vectors.insert(vec_5); set< std::vector<int> >::iterator itr; for(itr=set_of_vectors.begin(); itr!=set_of_vectors.end(); itr++) print_vector(*itr); }
Output:
5 22 44 12 14 11 13 10 11 12 12 13 25 26
As you can see only the unique vectors are printed out. Also, they are ordered in the ascending order based on the first elements of the vectors.
Also read: How to append a vector to a vector in C++
Leave a Reply