【问题标题】:C++ programming , build a matrix using std::vectorC++ 编程,使用 std::vector 构建矩阵
【发布时间】:2021-01-23 18:54:16
【问题描述】:

如何在 c++ 中使用带有默认元素的 std::vector 构建矩阵?

我试过了:

vector<vector<int> > matrix;
for(int i = 0; i<row; i++)
{
    for(int j = 0; j<column; j++)
    {
         matrix[i][j] = 0 ;  //here
    }
}

如果我不给出矩阵元素,我需要将矩阵自动初始化为默认数字 (0) 并在我要求构建矩阵时使用数字(例如 5)进行初始化

【问题讨论】:

  • 使用向量 > mat(row, vector (column, number))
  • 如果我不给出数字,它就会明白我希望它是默认值 (0)??
  • 您的尝试成功创建了一个 0x0 矩阵,就像 vector&lt;int&gt; vec; 创建一个 0 元素向量一样。你知道如何用n 元素创建一个向量(对于一些数字n)吗? (建立你的目标。掌握小部分,你就会很好地掌握整体。)
  • 你的意思是vector v1(8,8)??
  • @Y.D 对两个参数使用相同的数字通常是一个坏主意(导致混淆)。假设vector&lt;int&gt; v1(6,8),它创建了一个由6 元素组成的向量,每个元素的值都为8。你想要一个由row 元素组成的向量,每个元素都是一个向量。您可以担心下一步这些内部向量是什么。

标签: c++


【解决方案1】:

让我们创建一个0's5 x 5 矩阵。

#include <iostream>
#include <vector> 
using namespace std;

int main() {
    int row = 5, col = 5;
    vector<vector<int>> v;
    for (int i = 0; i < row; i++) {  
        vector<int> tempV; 
        for (int j = 0; j < col; j++) { 
            tempV.push_back(0); 
        } 
        v.push_back(tempV); 
    }
    
    //print the matrix 
    for (int i = 0; i < v.size(); i++) { 
        for (int j = 0; j < v[i].size(); j++) 
            cout << v[i][j] << " "; 
        cout << endl; 
    } 
    return 0;
}

输出:

0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0

【讨论】:

  • vector&lt;vector&lt;int&gt;&gt; matrix(ROW, vector&lt;int&gt;(COL,0); 将完成所有必要的设置。避免使用宏来表示常量。 constexpr int ROW = 5; 将提供相同的结果,同时提供类型安全且不会出现意外的预处理器替换。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多