Reputation: 25
Assuming that there is a Class called Solution:
class Solution{
private:
int COL;
int ROW;
vector<vector <int>> grid(ROW, vector<int>(COL));
public:
void setData();
};
Then put the definition of function setData()
void Solution::setData(){
for (int i = 0; i < ROW; i++){
for (int j = 0; j < COL; j++){
grid[i][j] = 1;
}
}
}
grid
, ROW
and COL
is unread;grid
as vector<vector<int>> grid(100, vector<int>(100))
(namely, define dimension of vector clearly), it then lose the feature of dynamicgrid
, the programme would be interrupted when running setData()
Sincerely thank you for any suggestions!
thanks for you guys, I defined the constructor function:
Solution(){
ROW = 100;
COL = 100;
}
however, COL and ROW is also unreadable in definition of grid
(vector<vector>)
thank you!
Upvotes: 0
Views: 1508
Reputation: 766
As you can fill the vector at the running time so let's change the setData function like:
class Solution{
private:
int COL;
int ROW;
vector<vector <int>> grid;
public:
void setData();
Solution(int c, int r){
COL = c;
ROW = r;
}
};
void Solution::setData(){
vector <int> row;
row.reserve(COL);
for (int j = 0; j < COL; j++){
row.push_back(1);
}
for (int i = 0; i < ROW; i++){
grid.push_back(x);
}
}
int main()
{
Solution x(5,10);
x.setData();
return 0;
}
I tested it and it worked properly. If you don't want to put 1 for all items in your grid, change the first for loop as you desired and make them two nested loops in your setData function.
Upvotes: 0
Reputation: 106
In your code ROW and COL are undefined and you try to use them in your function setData().
Try using simple functions to add data
AddRow(vecotr<int> rowValue) {
grid.push_back(rowValue);
}
If you want to use a Set function you have to check validity.
SetRow(uint pos, vecotr<int> rowValue){
if (pos<=grid.size())
return;
...
}
Upvotes: 0
Reputation: 19262
Currently your definition of grid
vector<vector <int>> grid(ROW, vector<int>(COL));
looks rather like a function. State it's type and name, and initialise elsewhere to avoid this:
class Solution {
private:
const int COL;
const int ROW;
vector<vector <int>> grid;
public:
void setData();
Solution() :
ROW{ 10 },
COL {5 },
grid(ROW, vector<int>(COL))
{}
};
I made the sizes const
, cos they are for the lifetime of your Solution, I presume.
You can change the constructor to take the values for the row and column and pass them in, rather than use the magic number I chose.
Upvotes: 1