Prerequisites:
Structures are user-defined datatypes used to group various related variables into one single data type. The structures can contain variables of different data types like int, string, boolean, etc. The variables are called the members of the structure. They become handy when we have to keep track of multiple variables while solving problems.
Vector of structs can be used when there is a situation where we need to keep track of records in a data structure of different people with different characteristics.
Syntax:
vector<struct_name> vector_name;
Methods to Insert Elements into the Vector
There are multiple methods to insert elements inside a vector of structures:
- Using push_back()
- Individual insertion
- Using the Initializer list constructor
- Using range constructor
- Using custom constructor
1. Using push_back() Method
push_back() is used for inserting elements at the end position in a vector. We can use this method to insert structure into vector.
C++
#include <bits/stdc++.h>
using namespace std;
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
struct Author A[] = { { "Geek1" , 124, 65000 },
{ "Geek2" , 156, 100000 },
{ "Geek3" , 10, 200 } };
vector<Author> v;
for ( int i = 0; i < sizeof (A) / sizeof (A[0]); i++) {
v.push_back(A[i]);
}
cout << "author_name"
<< " "
<< "article_count"
<< " "
<< "article_views" << endl;
for ( auto & a : v) {
cout << a.author_name << " "
<< a.article_count << " "
<< a.article_views << endl;
}
return 0;
}
|
Output
author_name article_count article_views
Geek1 124 65000
Geek2 156 100000
Geek3 10 200
2. Individual Insertion
Inserting every element individual element one by one rather than collective push_back() of structures.
C++
#include <bits/stdc++.h>
using namespace std;
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
struct Author a1 = { "Geek1" , 124, 65000 };
struct Author a2 = { "Geek2" , 156, 100000 };
struct Author a3 = { "Geek3" , 10, 200 };
vector<Author> v;
v.push_back(a1);
v.push_back(a2);
v.push_back(a3);
cout << "author_name"
<< " "
<< "article_count"
<< " "
<< "article_views" << endl;
for ( auto & a : v) {
cout << a.author_name << " "
<< a.article_count << " "
<< a.article_views << endl;
}
return 0;
}
|
Output
author_name article_count article_views
Geek1 124 65000
Geek2 156 100000
Geek3 10 200
3. Using the Initializer List Constructor
The initializer list constructor can be useful when we want elements to be inserted at initializing the vector.
C++
#include <bits/stdc++.h>
using namespace std;
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
vector<Author> v = { { "Geek1" , 124, 65000 },
{ "Geek2" , 156, 100000 },
{ "Geek3" , 10, 200 } };
cout << "author_name"
<< " "
<< "article_count"
<< " "
<< "article_views" << endl;
for ( auto & a : v) {
cout << a.author_name << " "
<< a.article_count << " "
<< a.article_views << endl;
}
return 0;
}
|
Output
author_name article_count article_views
Geek1 124 65000
Geek2 156 100000
Geek3 10 200
4. Using Range Constructor
Range constructor can be very helpful when we want to create a copy vector of the original vector.
C++
#include <bits/stdc++.h>
using namespace std;
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
vector<Author> v = { { "Geek1" , 124, 65000 },
{ "Geek2" , 156, 100000 },
{ "Geek3" , 10, 200 } };
vector<Author> nv(v.begin(), v.end());
cout << "author_name"
<< " "
<< "article_count"
<< " "
<< "article_views" << endl;
for ( auto & a : v) {
cout << a.author_name << " "
<< a.article_count << " "
<< a.article_views << endl;
}
return 0;
}
|
Output
author_name article_count article_views
Geek1 124 65000
Geek2 156 100000
Geek3 10 200
5. Using Custom Constructor
A custom constructor is used for conditions where we want some fixed value to be present after the initialization of a vector.
C++
#include <bits/stdc++.h>
using namespace std;
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
vector<Author> v(3, { "Geek1" , 124, 65000 });
cout << "author_name"
<< " "
<< "article_count"
<< " "
<< "article_views" << endl;
for ( auto & a : v) {
cout << a.author_name << " "
<< a.article_count << " "
<< a.article_views << endl;
}
return 0;
}
|
Output
author_name article_count article_views
Geek1 124 65000
Geek1 124 65000
Geek1 124 65000
Traversal of Vector
1. Using Index Traversal
If a vector of structs v is needed to be traversed using a loop where we traverse from index number 0 to v.size()-1. Let us check it with for loop.
Example:
C++
#include <bits/stdc++.h>
using namespace std;
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
vector<Author> v = { { "Geek1" , 124, 65000 },
{ "Geek2" , 156, 100000 },
{ "Geek3" , 10, 200 } };
cout << "author_name"
<< " "
<< "article_count"
<< " "
<< "article_views" << endl;
for ( int i = 0; i < v.size(); i++) {
cout << v[i].author_name << " "
<< v[i].article_count << " "
<< v[i].article_views << endl;
}
return 0;
}
|
Output
author_name article_count article_views
Geek1 124 65000
Geek2 156 100000
Geek3 10 200
2. Using auto to Traverse
If a vector of structs v is needed to be traversed using auto, here auto automatically treats the variable as the iterator which helps to iterate over the vector.
Example:
C++
#include <bits/stdc++.h>
using namespace std;
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
vector<Author> v = { { "Geek1" , 124, 65000 },
{ "Geek2" , 156, 100000 },
{ "Geek3" , 10, 200 } };
cout << "author_name"
<< " "
<< "article_count"
<< " "
<< "article_views" << endl;
for ( auto & a : v) {
cout << a.author_name << " "
<< a.article_count << " "
<< a.article_views << endl;
}
return 0;
}
|
Output
author_name article_count article_views
Geek1 124 65000
Geek2 156 100000
Geek3 10 200
Similar Reads
Vector of Strings in C++
In C++, a vector of strings is a std::vector container that stores multiple strings. It is useful when you need to store a collection of string data in a single container and refer to them quickly. In this article, we will learn about the vector of strings and how to create and use it in C++. Table
3 min read
C++ Vector of Pointers
Prerequisites Pointers in C++Vectors in C++ Vector of pointers are vectors that can hold multiple pointers. Each pointer within a vector of pointers points to an address storing a value. We can use the vector of pointers to manage values that are not stored in continuous memory. How to Create Vector
6 min read
Vector in C++ STL
In C++, vector is a dynamic array that stores collection of elements same type in contiguous memory. It has the ability to resize itself automatically when an element is inserted or deleted. SyntaxVector is defined as the std::vector class template inside the <vector> header file. [GFGTABS] C+
9 min read
Array of Vectors in C++ STL
Prerequisite: Arrays in C++, Vector in C++ STL An array is a collection of items stored at contiguous memory locations. It is to store multiple items of the same type together. This makes it easier to get access to the elements stored in it by the position of each element. Vectors are known as dynam
3 min read
Copy File To Vector in C++ STL
Prerequisite:Â Vectors in C++ STLFile Handling in C++ The C++ Standard Template Library (STL) provides several useful container classes that can be used to store and manipulate data. One of the most commonly used container classes is the vector. In this article, we will discuss how to copy the conte
2 min read
C++ - Pointer to Structure
Pointer to structure in C++ can also be referred to as Structure Pointer. A structure Pointer in C++ is defined as the pointer which points to the address of the memory block that stores a structure. Below is an example of the same: Syntax: struct name_of_structure *ptr; // Initialization of structu
2 min read
Passing a Vector to Constructor in C++
Just like any other data, we can also pass a vector to a constructor of the desired class. We can pass it by value or by reference. What we do with it depends on our requirement. The following are some of the common cases: Copy Data to Member Vector If we want to store the copy of the vector in the
3 min read
Convert Set To Vector in C++
In C++, std::vectors stores data in the contiguous memory location while std::set stores data in non-contiguous memory location but in some specified order. In this article, we will learn different methods to convert the set to vector in C++. Table of Content Using Range Constructor of std::vectorUs
3 min read
Vector size() in C++ STL
In C++, the vector size() is a built-in method used to find the size of a vector. The size of a vector tells us the number of elements currently present in the vector. In this article, we will learn about the vector size() method. Let's take a look at the simple code example: [GFGTABS] C++ #include
3 min read
Common Subtleties in Vector STLs
Prerequisite - Vector Basics Following are some important points that can save time on little things in an interview or an important coding contest. vector <int> vect(10) vs vector<int> vect[10] // Creates a vector vect[] of size 10 vector <int> vect(10) // creates an array of vect
3 min read