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