c++ - c++ 中二维 vector 的 cout 缺失行

标签 c++ vector stdout cout

我很疯狂,无法解释这里发生的事情。

#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

int main() {
    int i = 0, j = 0, m = 3, n = 3;
    vector<vector<int> > vvi(3, vector<int>(3, 1));

    // why the following code outputs only single row, 
    // i.e.,"111" from vvi[0]? what about vvi[1], vvi[2]?
    for(; i < m; ++i) {
        for(; j< n; ++j) {
            cout << vvi[i][j];
        }
    }
    // any difference from the code below? 
    // for(int i=0; i < m; ++i) {
    //   for(int j= 0; j< n; ++j) {
    //      cout << vvi[i][j];
    //   }
    // }
}

最佳答案

在外循环的第一次迭代中,计数器变量 j0 递增至 n , 但因为它永远不会重置为 0它停留在 n ,因此内部循环条件 j < n对于外循环的所有后续迭代都是假的。因此 cout永远不会再执行。

在您注释掉的代码中,j重置(重新初始化)为 0对于外循环的每次迭代,因此它将打印所有行。

关于c++ - c++ 中二维 vector 的 cout 缺失行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35154918/

相关文章:

c++ - 将标准输出转发到 Qt 应用程序中的文件

c++ - 这不应该是编译时错误吗?

c++ - SFINAE 检测类型是否被定义

c++ - 从 vector 和 unordered_map 中获取三个最常出现的单词及其计数值

audio - 让 gstreamer 将音频流拆分为单个输出流中的多个连接但离散的文件?

c - 建议分布式计算,从流中获取数据

c++ - 后缀(前缀)增量、左值和右值(在 C 和 C++ 中)

c++ - 从过剩教程中了解宏测量数组计数

matlab - MATLAB 中的二进制数组

c++ - 从 std::vector 获取特定结构对象的快速方法