C++输出二维向量
C++ output 2D Vector
我写了两个 for
循环,希望看看它们是否会输出一个名为 data
的向量中的每个值,但它不起作用。有一个与 data[i].at(j)
有关的错误,我不太明白。
vector<int> data; //it is filled with some integers with x rows and y columns
for ( int i = 0; i < data.size(); ++i) {
for ( int j = 0; j < col; ++j ) {
cout << data[i].at(j) << ' ';
}
cout << endl;
}
这个方法我也试过了,也没有用。 data.at(i).at(j)
有错误。
for ( int i = 0; i < data.size(); ++i ) {
for ( int j = 0; j < col; ++j ) {
cout << data.at(i).at(j) << ' ';
cout << endl;
}
这些中的任何一个都可以通过一个小的修复来工作还是根本不起作用?
关注这里:
data[i].at(j)
当您在位置 i
索引向量时,您会得到它的第 i
个数字。即 int
类型。
然后您在 int
上请求一个名为 at()
的方法。这不是原始类型 int
.
提供的
如果您尝试用 1D 模拟 2D 矢量,那么您可以这样做:
for (int i = 0; i < data.size(); ++i)
{
for (int j = 0; j < col; ++j)
cout << data[i + j * col] << ' ';
cout << endl;
}
我发现打印 2D Vector 的内容完全 就像 2D Array 一样容易。
示例:
假设我们有一个称为矩阵的二维向量,它包含 5 x 5 个值:
1, 2, 3, 4, 5,
1, 2, 3, 4, 5,
1, 2, 3, 4, 5,
1, 2, 3, 4, 5,
1, 2, 3, 4, 5
我们需要输出矩阵,所以我们会使用:
// The matrix:
vector <vector <int> > matrix ;
// The Row container:
vector <int> row
// The creation of the row:
for (int i = 1 ; i <= 5 ; i = i + 1) {
row.push_back (i) ;
}
// The creation of the matrix.
for (int j = 1 ; j <= 5 ; j = j + 1) {
matrix.push_back (row) ;
}
// Print the matrix
for (int k = 0 ; k < matrix.size () ; k = k + 1) {
for (int l = 0 ; l < matrix [k].size () ; l = l + 1) {
cout << matrix [k] [l] << ' ' ;
}
cout << endl ;
}
The above example will also work if you have rows with different sizes:
1, 2, 3, 4,
1, 2,
1, 2, 3,
1, 2, 3, 4, 5
1
但是,它将需要用户输入。
我写了两个 for
循环,希望看看它们是否会输出一个名为 data
的向量中的每个值,但它不起作用。有一个与 data[i].at(j)
有关的错误,我不太明白。
vector<int> data; //it is filled with some integers with x rows and y columns
for ( int i = 0; i < data.size(); ++i) {
for ( int j = 0; j < col; ++j ) {
cout << data[i].at(j) << ' ';
}
cout << endl;
}
这个方法我也试过了,也没有用。 data.at(i).at(j)
有错误。
for ( int i = 0; i < data.size(); ++i ) {
for ( int j = 0; j < col; ++j ) {
cout << data.at(i).at(j) << ' ';
cout << endl;
}
这些中的任何一个都可以通过一个小的修复来工作还是根本不起作用?
关注这里:
data[i].at(j)
当您在位置 i
索引向量时,您会得到它的第 i
个数字。即 int
类型。
然后您在 int
上请求一个名为 at()
的方法。这不是原始类型 int
.
如果您尝试用 1D 模拟 2D 矢量,那么您可以这样做:
for (int i = 0; i < data.size(); ++i)
{
for (int j = 0; j < col; ++j)
cout << data[i + j * col] << ' ';
cout << endl;
}
我发现打印 2D Vector 的内容完全 就像 2D Array 一样容易。
示例:
假设我们有一个称为矩阵的二维向量,它包含 5 x 5 个值:
1, 2, 3, 4, 5,
1, 2, 3, 4, 5,
1, 2, 3, 4, 5,
1, 2, 3, 4, 5,
1, 2, 3, 4, 5
我们需要输出矩阵,所以我们会使用:
// The matrix:
vector <vector <int> > matrix ;
// The Row container:
vector <int> row
// The creation of the row:
for (int i = 1 ; i <= 5 ; i = i + 1) {
row.push_back (i) ;
}
// The creation of the matrix.
for (int j = 1 ; j <= 5 ; j = j + 1) {
matrix.push_back (row) ;
}
// Print the matrix
for (int k = 0 ; k < matrix.size () ; k = k + 1) {
for (int l = 0 ; l < matrix [k].size () ; l = l + 1) {
cout << matrix [k] [l] << ' ' ;
}
cout << endl ;
}
The above example will also work if you have rows with different sizes:
1, 2, 3, 4,
1, 2,
1, 2, 3,
1, 2, 3, 4, 5
1
但是,它将需要用户输入。