如何创建2D矢量?我知道在2D数组中,我可以表达如下:
a[0][1]=98;
a[0][2]=95;
a[0][3]=99;
a[0][4]=910;
a[1][0]=98;
a[1][1]=989;
a[1][2]=981;
a[1][3]=987;
Run Code Online (Sandbox Code Playgroud)
如何使用C++ STL Vector实现这一目标?
Ari*_*Ari 32
vector<vector<int> > a;
如果要定义行和列,
vector<vector<int> > a{{11, 2, 4}, {4, 5, 6}, {10, 8, -12}};
Dav*_*eas 30
std::vector< std::vector< int > > a; // as Ari pointed
Run Code Online (Sandbox Code Playgroud)
将其用于不断增长的矩阵可能会变得复杂,因为系统不能保证所有内部向量都具有相同的大小.无论何时在第二维上成长,您都必须明确地增长所有向量.
// grow twice in the first dimension
a.push_back( vector<int>() );
a.push_back( vector<int>() );
a[0].push_back( 5 ); // a[0].size() == 1, a[1].size()==0
Run Code Online (Sandbox Code Playgroud)
如果这对你来说没问题(它不是一个矩阵而是向量的向量),你应该没问题.否则,您需要特别注意保持所有向量的第二维稳定.
如果您在固定大小的矩阵上进行规划,那么您应该考虑封装在类中并重写operator()而不是提供双数组语法.在这里阅读关于此的C++ FAQ
aJ.*_*aJ. 13
std::vector< std::vector<int> > a;
//m * n is the size of the matrix
int m = 2, n = 4;
//Grow rows by m
a.resize(m);
for(int i = 0 ; i < m ; ++i)
{
//Grow Columns by n
a[i].resize(n);
}
//Now you have matrix m*n with default values
//you can use the Matrix, now
a[1][0]=98;
a[1][1]=989;
a[1][2]=981;
a[1][3]=987;
//OR
for(i = 0 ; i < m ; ++i)
{
for(int j = 0 ; j < n ; ++j)
{ //modify matrix
int x = a[i][j];
}
}
Run Code Online (Sandbox Code Playgroud)