在 C++ 中打印向量向量的元素时输出错误

Wrong output when printing elements of a vector of vectors in C++

我主要有这个:

vector<vector<u8>> matrix(size.first, vector<u8>(size.second));
for(auto i = 0; i < matrix.size(); ++i){
    for(auto j = 0; j < matrix[0].size(); ++j){
        matrix[i][j] = 5;
    }
}
print_matrix(matrix);

函数print_matrix是:

void print_matrix(vector<vector<u8>>& m){
    cout << "_______________________\n";
    for(size_t i (0) ; i < m.size(); ++i){
        auto& row = m[i];
        for(size_t j (0); j < row.size(); ++j){
            cout << row[j] << "-";
        }
        cout << endl;
    }
} 

我期望在 stdout 上打印一个全为 5 的矩阵,但我却得到:

_______________________
-----
-----
-----
-----
-----

为什么输出中没有打印数字?

尝试使用基于范围的 for 循环,例如:

void print_matrix(std::vector<std::vector<u8>> const& m){
    std::cout << "_______________________\n";
    for (auto const& i : m) {
        for (auto const j : i){
            std::cout << static_cast<unsigned>(j) << "-";
            // or
            // std::cout << +j << "-";
        }
        std::cout << std::endl;
    }
} 

请记住,uint8_t 被认为是原始字符,因此需要将其转换为 unsigned int 才能将其输出为数值。