这个简单程序有什么问题。我想创建多列表并使用c ++ STL插入。其给定的分割错误。
#include <iostream>
#include <list>
using namespace std;
int main(){
list<int> *l;
l[0].push_back(1);
l[10].push_back(12);
cout<<endl;
return 0;
}
您为什么使用指向列表的指针?您没有为列表分配内存。您可以使用一个容器存储多个列表,例如std:array表示元素的静态数量,std :: vector表示元素的动态数量:
#include <array>
#include <iostream>
#include <list>
#include <vector>
using std::array;
using std::vector;
using std::list;
using std::cout;
int main(){
std::array<list<int>, 11> l;
l[0].push_back(1);
l[10].push_back(12);
std::vector<list<int>> l2(11);
l2[0].push_back(1);
l2[10].push_back(12);
cout << '\n';
return 0;
}
[list<int> *l;
使l
成为指向list<int>
的指针,但实际上并没有创建list<int>
-绝对不是您要访问的list<int>
的数组。
可能的解决方案。
[C0的普通C固定大小的数组:
list<int>
使用C ++固定大小的std :: array:
#include <iostream>
#include <list>
int main() {
std::list<int> l[11]; // place for 11 list<int>`'s
l[0].push_back(1);
l[10].push_back(12);
}
使用允许动态添加更多#include <array>
#include <list>
int main() {
std::array<std::list<int>, 11> l; // place for 11 list<int>'s
l[0].push_back(1);
l[10].push_back(12);
}
的C ++ std::vector
:
list<int>
#include <list>
#include <vector>
int main() {
std::vector<std::list<int>> l(11); // starts with place for 11 list<int>'s
l[0].push_back(1);
l[10].push_back(12);
}
是指向列表的指针,它没有初始化,因此向其中添加元素具有未定义的行为。
在list<int> *l;
中正在创建指向list<int> *l;
的指针。在访问list
之前,您需要为其分配有效地址。
类似这样的东西,
l