为什么下面的代码不起作用?它说“ 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();