【发布时间】:2015-04-13 18:41:47
【问题描述】:
我使用向量列表(来自 STL)创建(或我想创建)简单程序。
用户指定向量的数量,然后指定每个向量的长度。然后程序在 for 循环中询问向量的每个元素。
询问用户关于编写第一个元素后它崩溃了。 在我将数据更改为 STL 列表和向量之前,程序运行良好。早些时候我使用简单的一维表和几个循环,但这种类型的程序对我来说没用。 代码如下:
#include <iostream>
#include <vector>
#include <list>
using namespace std;
void writing(int, int);
int main() {
int n, i, j, m;
cout << "Give quantity of vectors" << endl;
cin >> m;
for (j = 1; j <= m; j++) {
cout << "Give quantity of elements in vector number " << j << endl;
cin >> n;
writing(n, m);
}
return 0;
}
void writing(int n, int m) {
int i;
int j = 0;
list<vector<double>> mylist;
{
auto it = mylist.begin();
advance(it, j);
vector<double>& v = *it;
for (i = 0; i <= n; i--) {
cout << "Give the element number " << i << endl;
cin >> v[i];
}
}
}
请帮我找出错误。我在writing 函数中看到了int j 的错误,但错误发生得更早。
【问题讨论】:
-
请正确缩进。
-
还有MCVE也请...
-
您的列表为空,但您将其视为空列表。每次只需循环并推送一个向量到列表中。
-
另外,您取消引用空向量列表中的幽灵元素。
-
我有一种感觉,您希望将列表传入部分填充,而不是每次调用函数时都创建一个新列表。