Is there any problem with my code ?
std::vector weights;
int weight[2] = {1,2};
weights.push_back(weight);
It can\'t be compi
To instantiate the vector, you need to supply a type, but int[2] is not a type, it's a declaration.
Arrays aren't copy constructable so you can't store them in containers (vector
in this case). You can store a nested vector
or in C++11 a std::array
.
Just use
vector<int*> .That will definitely work.
A relevant discussion on the same topic : Pushing an array into a vector
You cant do that simply.
It's better you use either of these:
vector <vector<int>>
(it's basically a two dimensional vector.It should work in your case)
vector< string >
(string is an array of characters ,so you require a type cast later.It can be easily.).
you can declare an structure (say S) having array of int
type within it i.e.
struct S{int a[num]}
,then declare vector of
vector< S>
So indirectly, you are pushing array into a vector.
Array can be added to container like this too.
int arr[] = {16,2,77,29};
std::vector<int> myvec (arr, arr + sizeof(arr) / sizeof(int) );
Hope this helps someone.
One possible solution is:
std::vector<int*> weights;
int* weight = new int[2];
weight[0] =1; weight[1] =2;
weights.push_back(weight);