为什么我在包含向量的 C++ 程序中遇到分段错误

问题描述 投票:0回答:0

我是编程新手。每当我在编程中包含向量时,编译器都会显示分段错误。谁能帮我我哪里错了?我强烈怀疑这是由于向量造成的,因为注释掉向量后部分程序运行良好。我认为这可能是问题 以下是代码

#include <climits>
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    int a, b; // a rows b columns
    cin >> a >> b;
    vector<vector<int>> k(a, vector<int>(b));

    for (int i = 0; i < a; i++) {
        for (int j = 0; j < b; j++) {
            int ele;
            cin >> ele;
            k[i].push_back(ele);
        }
    }
    vector<vector<int>> ans(a, vector<int>(b));

    for (int count = 0; count < a * b; count++) {
        int j2 = count % b, i2 = count / b;

        if (count % 4 == 0) { // left to right
            int q = k[0].size();
            while (q > 0) {
                ans[i2].push_back(k[0][0]);
                k[0].erase(k[0].begin());
                q--;
            }
        }

        if (count % 4 == 1) { // up to down
            int q = 0;
            while (q < k.size()) {

                ans[i2].push_back(k[q][k[0].size() - 1]);
                k[q].pop_back();
                q++;
            }
        }

        if (count % 4 == 2) { // right to left
            int q = k[0].size();
            while (q > 0) {

                ans[i2].push_back(k[k.size() - 1][q - 1]);
                k[k.size() - 1].pop_back();
                q--;
            }
        }

        if (count % 4 == 3) { // down to up
            int q = k.size();
            while (q > 0) {

                ans[i2].push_back(k[q - 1][0]);
                k[q - 1].erase(k[q - 1].begin());
                q--;
            }
        }
    }

    for (int i = 0; i < a; i++) {
        for (int j = 0; j < b; j++) {
            cout << ans[a][b];
        }
    }

    return 0;
}
c++ segmentation-fault
© www.soinside.com 2019 - 2024. All rights reserved.