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++
// C++ Program to initialize
// vector of struct
// Using push_back()
#include <bits/stdc++.h>
using namespace std;
// Declaring a structure
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
// Declaring the vector of structs
struct Author A[] = { { "Geek1", 124, 65000 },
{ "Geek2", 156, 100000 },
{ "Geek3", 10, 200 } };
vector<Author> v;
// Insertion of elements using push_back()
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;
}
Outputauthor_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++
// C++ Program to initialize
// vector of struct
// Individual insertion
#include <bits/stdc++.h>
using namespace std;
// Declaring a structure
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
// Declaring the vector of structs
struct Author a1 = { "Geek1", 124, 65000 };
struct Author a2 = { "Geek2", 156, 100000 };
struct Author a3 = { "Geek3", 10, 200 };
vector<Author> v;
// Insertion of elements using push_back()
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;
}
Outputauthor_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++
// C++ Program to initialize
// vector of struct
// Using the Initializer list constructor
#include <bits/stdc++.h>
using namespace std;
// Declaring a structure
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
// Declaring the vector of structs
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;
}
Outputauthor_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++
// C++ Program to initialize
// vector of struct
// Using range constructor
#include <bits/stdc++.h>
using namespace std;
// Declaring a structure
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
// Declaring the vector of structs
vector<Author> v = { { "Geek1", 124, 65000 },
{ "Geek2", 156, 100000 },
{ "Geek3", 10, 200 } };
// Initializing using range constructor
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;
}
Outputauthor_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++
// C++ Program to initialize
// vector of struct
// Using custom constructor
#include <bits/stdc++.h>
using namespace std;
// Declaring a structure
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
// Declaring the vector of structs
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;
}
Outputauthor_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++
// C++ Program to illustrate
// Traversing of a vector
// Using index number
#include <bits/stdc++.h>
using namespace std;
// Declaring a structure
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
// Declaring the vector of structs
vector<Author> v = { { "Geek1", 124, 65000 },
{ "Geek2", 156, 100000 },
{ "Geek3", 10, 200 } };
cout << "author_name"
<< " "
<< "article_count"
<< " "
<< "article_views" << endl;
// Traversing vector
for (int i = 0; i < v.size(); i++) {
cout << v[i].author_name << " "
<< v[i].article_count << " "
<< v[i].article_views << endl;
}
return 0;
}
Outputauthor_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++
// C++ Program to demonstrate
// traversing of a vector
// Using auto keyword
#include <bits/stdc++.h>
using namespace std;
// Declaring a structure
struct Author {
string author_name;
int article_count;
int article_views;
};
int main()
{
// Declaring the vector of structs
vector<Author> v = { { "Geek1", 124, 65000 },
{ "Geek2", 156, 100000 },
{ "Geek3", 10, 200 } };
cout << "author_name"
<< " "
<< "article_count"
<< " "
<< "article_views" << endl;
// Traversing vector
for (auto& a : v) {
cout << a.author_name << " "
<< a.article_count << " "
<< a.article_views << endl;
}
return 0;
}
Outputauthor_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 o
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
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.Create a VectorBefore creating a vector, we must know that a vector is defined as the std::vector class template i
7 min read
List of Vectors in C++ STL
In C++, the list of vector refers to the list container in which each element is a vector. In this article, we will learn about the list of vectors in C++.Letâs take a look at an example:C++#include <bits/stdc++.h> using namespace std; int main() { list<vector<int>> l = {{1, 3}, {2
3 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 VectorIf we want to store the copy of the vector in the cl
3 min read
Vector data() in C++ STL
In C++, the vector data() is a built-in function used to access the internal array used by the vector to store its elements. In this article, we will learn about vector data() in C++.Letâs take a look at an example that illustrates the vector data() method:C++#include <bits/stdc++.h> using nam
2 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 ContentUsing Range Constructor of std::vectorUsin
3 min read