please suggest which is the correct method of intialization for struct or class with vector/map/set/list containers as member variables
method-1:
struct my_data
{
int y{0};
};
struct my_vec
{
my_vec()
{
my_data_list.clear();
}
int x {0};
std::vector<my_data> my_data_list;
};
my_vec my_vec_init = {}; or
my_vec my_vec_init{};
method-2:
struct my_vec
{
int x {0};
std::vector<my_data> my_data_list = {};
};
my_vec my_vec_init = {}; or
my_vec my_vec_init{};
using direct initialization or copy initialization to template containers is corret or not. what is will happen when using direct or copy initialization.
sample program tried which is working fine. suggest initialization methods for template containers.
#include <iostream>
#include <vector>
using namespace std;
struct my_data
{
int y{0};
};
struct my_vec
{
my_vec()
{
my_data_list.clear();
}
int x {0};
std::vector<my_data> my_data_list; };
int main()
{
my_vec my_vec_data = {};
my_data data = {};
data.y = 100;
my_vec_data.x = 200;
my_vec_data.my_data_list.push_back(data);
std::cout<<“Data X:”<<my_vec_data.x<<std::endl;
for (auto& user_data : my_vec_data.my_data_list)
{
std::cout<<“Y:”<<user_data.y<<std::endl;
}
return 0;
}