c++ - matrix.size() 和 matrix[0].size() 有什么区别?

标签 c++ vector stl

在下面的代码中,matrix.size()matrix[0].size() 到底有什么区别?

int matrixElementsSum(std::vector<std::vector<int>> m) {
    int s = 0;
    for (int j = 0; j < m[0].size(); j++) {
        for (int i = 0; i < m.size(); i++) {
            if (m[i][j] == 0) {
                break;
            }
            s += m[i][j];
        }
    }
    return s;
}

最佳答案

假设你有:

std::vector<std::vector<int>> m(10, std::vector(20);

m.size()将是 10,std::vector<int> 的数量在m .
m[0].size()将是 20,数字 intm[0] .

将其与二维数组进行比较,如果您有:

int m[10][20];

sizeof(m)/sizeof(m[0])将为 10,即 m 中的行数.
sizeof(m[0])/sizeof(m[0][0])将为 20,即 m[0] 中的列数.

关于c++ - matrix.size() 和 matrix[0].size() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43404801/

相关文章:

c++ - 用随机值填充我的数组 C++

c++ - 最常用的 STL 算法、谓词、迭代器

c++ - 如果 Qt 不是十六进制,则 Qt 从 QLineEdit 中删除字符

c++ - Qt并发: call member function from another class

C++ 程序已停止工作 - 求解常微分方程

c++ - 为什么我们不能像在 C++ 中输入数组那样输入 vector ?

c++ - 谁应该拥有迭代器、我的数据类或该类中的实际列表?

c++ - 当不知道通用 STL 容器的迭代器值类型时如何使用模板化迭代器?

c++ - 令人困惑的 memcpy 行为,如何停止重叠

c++ - 调整大小时不调用表单属性