为什么下面的代码不起作用?它说“ vector 下标超出范围”。另外,有没有办法使用索引从列表中获取元素?

#include <iostream>
#include <vector>
#include <list>
using namespace std;
int main()
{
    vector<list<int> > adjList;
    adjList[0].push_back(2);
    cout << adjList[0].front();
}

最佳答案

adjList[0]指的是std::list中的第一个adjList。您有一个空的列表 vector (vector<list<int> > adjList;),这意味着尝试访问第一个元素会导致访问超出范围。

首先,您应该在 vector 中添加一个列表:

vector<list<int> > adjList;
adjList.emplace_back(); // adds an empty list
adjList[0].push_back(2);
cout << adjList[0].front();

07-26 03:18