由vector for循环引起的地址边界错误?

时间:2017-11-23 07:02:25

标签: c++ for-loop vector

我正在尝试为我正在编程的游戏打印出一块电路板。这是我的代码:

#include <iostream>
#include <vector>

using namespace std;

vector<char> column1 = { '-', '-', '-', '-', '-', '-'};
vector<char> column2 = column1;
vector<char> column3 = column1;
vector<char> column4 = column1;
vector<char> column5 = column1;
vector<char> column6 = column1;
vector<char> column7 = column1;

vector<vector<char>> all_columns = {
    column1, 
    column2, 
    column3, 
    column4, 
    column5, 
    column6, 
    column7
};

void print_board() {
    cout << "| ";
    for (int i = 0; i < 7; i++) {
        for (int j = 0; j < 6; ++i)
        {
            cout << all_columns[i][j]
                 << " ";
        }
    cout << "|\n";
    }
    return;
}

int main() {
    print_board();
    return 0;
}

我得到了一个“SIGSEGV(地址边界错误)”,我似乎无法看到腐烂大脑的问题,我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

您的问题是由内循环中的拼写错误引起的。为避免这种情况,请使用范围循环:

for (const auto& row: board)
{
    for (auto cell: row)
    {
        //do something here
    }
 }

通常有标准算法,先试着找。