我是第一次在STL库中使用vector类.我应该如何添加到矢量数组的特定行?
struct x{
vector <vector <int> > v;
int row;
};
vector< int* > my ints;
int add;
Run Code Online (Sandbox Code Playgroud)
如果我想用第一个整数指针添加到第一行v,我能做到吗?
myints[0]->v[myints[0]->row].push_back(add);
Run Code Online (Sandbox Code Playgroud)
这种方法是否可以创建向量int
s的二维向量,其中每一行可能具有不同的长度(即具有不同的列数)?
Mor*_*itz 64
我不确定问题是什么,因为你的示例代码有几个错误,并没有真正说清楚你想要做什么.但是这里是你如何添加到2D矢量的特定行:
// declare 2D vector
vector< vector<int> > myVector;
// make new row (arbitrary example)
vector<int> myRow(1,5);
myVector.push_back(myRow);
// add element to row
myVector[0].push_back(1);
Run Code Online (Sandbox Code Playgroud)
这回答了你的问题了吗?如果没有,您是否可以尝试更具体地说明您遇到的问题?
Roi*_*ton 43
如果事先知道(最大)行数和列数,则可以使用resize()
初始化向量向量,然后使用修改(和访问)元素operator[]
.例:
int no_of_cols = 5;
int no_of_rows = 10;
int initial_value = 0;
std::vector<std::vector<int>> matrix;
matrix.resize(no_of_rows, std::vector<int>(no_of_cols, initial_value));
// Read from matrix.
int value = matrix[1][2];
// Save to matrix.
matrix[3][1] = 5;
Run Code Online (Sandbox Code Playgroud)
另一种可能性是只使用一个向量并将id分成几个变量,访问类似vector[(row * columns) + column]
.
Adi*_*oel 10
只需使用以下方法创建二维矢量.
int rows, columns;
// . . .
vector < vector < int > > Matrix(rows, vector< int >(columns,0));
Run Code Online (Sandbox Code Playgroud)
要么
vector < vector < int > > Matrix;
Matrix.assign(rows, vector < int >(columns, 0));
//Do your stuff here...
Run Code Online (Sandbox Code Playgroud)
这将创建一个大小行*列的矩阵并用零初始化它,因为我们在构造函数中传递零(0)作为第二个参数,即vector <int>(columns,0).
小智 7
//首先初始化2D矢量
vector<vector<int>> matrix;
//初始化要插入矩阵的1D向量
vector<int> row;
//使用值初始化行
row.push_back(val1);
row.push_back(val2);
//现在将值插入矩阵
matrix.push_back(row);
// output- [[val1,val2]]
我们可以轻松地将向量用作2d数组。为此,我们使用resize()方法。下面的代码有助于理解此问题。
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int row, col;
cin>>row>>col;
vector <vector<int>> v;
v.resize(col,vector<int>(row));
//v = {{1,2,3}, {4,5,6}, {7,8,9}};
/** input from use **/
for(int i=0; i<row; i++)
{
for(int j=0; j<col; j++)
{
cin>>v[i][j];
}
}
for(int i=0;i<row; i++)
{
for(int j=0;j<col;j++)
{
cout<<v[i][j]<<" ";
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)