C++向量列表

C++ list of vectors

本文关键字:列表 向量 C++      更新时间:2023-10-16

我使用向量列表(来自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有误,但错误发生得更早。

这是一个列表。

list<vector<double>> mylist;

下面是一个无法取消引用的迭代器,因为它来自空列表。

auto it = mylist.begin();

在这里它被取消引用。

vector<double>& v = *it;

您的列表为空,因此您正在尝试访问不存在的向量。 然后,您尝试访问矢量中不存在的元素,因为您从未指定过矢量的大小。