matrix.size()== 0和matrix [0] .size()== 0之间有什么不同

时间:2016-02-25 05:53:18

标签: c++ vector

对于矢量>矩阵。, matrix.size()== 0和matrix [0]之间有什么不同.size()== 0?

 bool searchMatrix(vector<vector<int> > &matrix, int target) {
    int n = matrix.size();
    if (n == 0) {
        return false;
    }

    int m = matrix[0].size();
    if (m == 0) {
        return false;
    }

3 个答案:

答案 0 :(得分:0)

matrix.size()返回矩阵中 int 的向量; matrix [0] .size()返回向量矩阵中有多少 int [0]

答案 1 :(得分:0)

matrixvector<vector<int> >或向量的向量。如果它是空的,则里面没有向量。

matrix[0]matrix内的第一个向量。这是<vector<int>。如果存在,matrix不是真正的空,因为它包含一个元素。但如果它为空,则matrix内没有有用的数据。

答案 2 :(得分:0)

  • matrix.size() =矩阵向量的大小
  • matrix [0] .size() =矩阵向量的第一个元素的大小。假设矩阵为空,那么这将为您提供分段错误未定义的行为

此代码使用向量矢量模拟矩阵。它们使用两个向量作为列数和行数。有可能使用这样的矢量,但它不是一个非常好的主意IMO,因为没有什么可以防止你内部有不同大小的矢量。想象:

vector<vector<int>> matrix;
vector<int> row;
row.push_back(1);
matrix.push_back(row);
row.push_back(2);
row.push_back(3);
matrix.push_back(row);

cout << "matrix.size() = " << matrix.size() << endl;
cout << "matrix[0].size() = " << matrix[0].size() << endl;
cout << "matrix[1].size() = " << matrix[1].size() << endl;
cout << "matrix[2].size() = " << matrix[2].size() << endl;

这给出了:

matrix.size() = 2
matrix[0].size() = 1
matrix[1].size() = 3
matrix[2].size() = 25802

一些评论:

    你可以看到
  • ;矩阵包含两个向量(因为我们使用了两次matrix.push_back()
  • matrix [0]包含一个元素,因为我们在将此子向量放入矩阵之前只执行了一次row.push_back(1);
  • 没有任何东西强制矩阵[0] .size()和矩阵[1] .size()具有相同的维度
  • 访问从未填充的矩阵[2] .size()会给出未定义的行为