Filling up a 2d vector containing scruct

push_back 2d vector c++
initialize 2d vector c++
2d vector c++ example
initialize 2d vector c++ to zero
how to take input in 2d vector in c++
print 2d vector c++
declare 2d vector c++
c++ 2d vector size

I have a small struct containing a bool, char & two ints. But when I try to run this code, I get into a problem.

struct Struct
{
  bool check;
  char display;
  int x,y;
};

typedef vector<Struct> Array;

vector<Array> Matrix;

for (int i = 0; i < rows; i++)
{
    vector<Struct> temp;

    for (int j = 0; j < cols; j++)
    {
        temp[i].push_back(Matrix);
    }

    Matrix.push_back(temp);
}

I want to fill my 2D array so that I would later be able to write something in terms of:

for (int i = 0; i < rows; i++)
{
    for (int j = 0; j < cols; j++)
    {

            Matrix[i][j].display = '*';

    }

}

However, as of now, I get the error: "temp has no member push_back()".

You are referring temp[i]. As temp is not an array or a vector of vectors it can't be used like that. When you do temp[i] you are getting the i'th element of vector temp, which is a Struct, which has not a push_back method.

You can do something like this to initialize the Matrix:

....
for (int i = 0; i < rows; i++)
{
    vector<Struct> temp;

    for (int j = 0; j < cols; j++)
    {
        Struct s;
        s.check = true;
        s.display = 'c';
        s.x = i;
        s.y = j;  
        temp.push_back(s);
    }

    Matrix.push_back(temp);
}
....

2D vector in C++ with user defined size, Initializing 2D vector "vect" with. // values. vector<vector< int > > vect{ { 1, 2, 3 },. { 4, 5, 6 },. { 7, 8, 9 } };. // Displaying the 2D vector. for ( int i = 0; i < vect.size(); i++)  Returns a newly allocated vector containing the elements in the range [at, len). After the call, the original vector will be left containing the elements [0, at) with its previous capacity unchanged. Panics. Panics if at > len. Examples

As the above answers have already mentioned you are trying to call push_back() on Struct type rather than on std::vector<Struct> type, so your compiler is complaining the same. Try below:

void initMatrix(int rows, int cols)
{
    for (int i = 0; i < rows; i++)
    {
        Array temp;
        for (int j = 0; j < cols; j++)
        {
            Struct s;
            // Struct s = initStruct(); // if you want to initialize with other values
            temp.push_back(s);
        }

        Matrix.push_back(temp);
    }
}

filling a 2d vector - C++ Forum, So I've created a 2d vector " mytable" and I wish to fill it with #include <vector> using namespace std; struct DataStruct { int x; double y;  C++ Filling a 2d Vector with Structs. Ask Question Asked 4 years ago. Making statements based on opinion; back them up with references or personal experience.

You are mixing the types and your compiler issues an error :

typedef vector<Struct> Array; 

vector<Array> Matrix; // a vector of vectors

for (int i = 0; i < rows; i++) {
    vector<Struct> temp;

    for (int j = 0; j < cols; j++)
    {
       // temp[i].push_back(Matrix); -> wrong  
       // Matrix is a vector of vectors.
       // but temp is a vector of structs.
       temp.push_back(Struct()); 
    }

    Matrix.push_back(temp); //push the vector into the vector 
}

How can I resize a 2D vector of objects given the width and height , <int>> M; //int m = number of rows, n = number of columns; M. The ‘fill’ function assigns the value ‘val’ to all the elements in the range [begin, end), where ‘begin’ is the initial position and ‘end’ is the last position. NOTE : Notice carefully that ‘begin’ is included in the range but ‘end’ is NOT included.

Use this type of mechanism to make 2D array of Structure.

vector < vector<Struct>> xyz;
vector<Struct> abc;

    //set value ++++++++
    Struct _st;
    _st.check = true;
    _st.display = NULL;
    _st.x = 10;
    _st.y = 10;
    //set value --------

abc.push_back(_st);
xyz.push_back(abc);

C++ week 13, Arrays, C-strings, typedef, How do you declare a two dimensional vector in C++? A structure array is a data type that groups related data using data containers called fields. Each field can contain any type of data. Each field can contain any type of data. Access data in a field using dot notation of the form structName.fieldName .

You can simply use resize() with a default row vector of default elements :

matrix.resize(rows,·vector<Struct>(cols));

Below an example in C++11, with a clear() before resize() in order to reinit with default values an already used matrix.

#include <vector>

using namespace std;

struct Struct {
    bool check = false;
    char display = '\0';
    int x = 0, y = 0;
};

void init_matrix(vector<vector<Struct>>& matrix, size_t rows, size_t cols)
{
    matrix.clear();
    matrix.resize(rows, vector<Struct>(cols));
}

Creating a Matrix using 2D vector in C++ – Vector of Vectors , Initializing Vector of Vector – 2D vector. A vector can be initialized using parametrized constructor i.e.. std::vector <NUMBER OF ELEMENTS,  To simplify the creation of large vectors, you can define a vector by specifying the first entry, an increment, and the last entry. Matlab will automatically figure out how many entries you need and their values. For example, to create a vector whose entries are 0, 2 , 4, 6, and 8, you can type in the following line: >> 0:2:8 ans = 0 2 4 6 8.

Initialize a two-dimensional vector in C++, The fill constructor creates a vector of specified number of elements and fills with the specified value. This example shows how to index into a structure that is nested within another structure. The general syntax for accessing data in a particular field is. When a structure is scalar (1-by-1), you do not need to include the indices to refer to the single element. For example, create a scalar structure s, where field n is a nested scalar structure

How to create a 2D vector array using std:vector<>, First I create an array of vectors of size r ( this would be the no of rows of the 2d vector ). int r;; cin>>r;; vector<int> v[r];. Next , I fill up the r rows with the number of​  Running into an issue trying to fill a vector of structs. I am completely stuck. Here the assignment question Using the data file provided on the next page, write the C++ program to implement a vector of structs containing wines, vintage and scores. Create a file names wines.dat using the data on

std::array, array. (C++11). vector · deque · forward_list. (C++11). list · set · multiset · map std::array is a container that encapsulates fixed size arrays. overwrites every element of the array with the corresponding element of another array fill. fill the container with specified value (public member function) [edit]. Search for 2d Vector Graphics on the New KensaQ.com

Comments
  • I understand, thank you. Would it be possible to create such a 2D array ? I'm still not sure of how I would fill up my array.
  • What is your final necessity? To have a 2d array of Struct?
  • Yes, exactly. I want to be able to give certain positions in my Matrix[i][j] values which are contained in Struct. I was able to do it by #define SIZE and then Matrix[SIZE][SIZE]. However, I need my matrix size to be dynamic, and this is where I run in to the issue with filling the array.
  • Works like a charm. Thank you !
  • Great! You go on and accpet the answer that helped.