在运行我的代码时,显示在抛出';的实例后调用的terminate;std::bad#u alloc';什么():std::坏的 我的代码是C++中的一个图形的实现。我从一个网站复制了我的代码,但当我试图在本地IDE上运行它时,它抛出了一个错误 #include<iostream> #include<vector> #include<list> #define pi 3.14159 #define ll long long #define pb push_back #define pf push_front using namespace std; class Graph{ // Graph class int v; list <int> *l; public: Graph(int v) { this-> v = v; l = new list<int>[v]; } void add_edge (int i , int j) { l[i].pb(j); l[j].pb(i); } void show_adj() { for(int i = 0 ; i < v ; i++) { cout << i << "->"; for(int a : l[i]) { cout << a << ","; } cout << "\n"; } } }; int main() // main body { Graph g(4); g.add_edge(7,4); g.add_edge(7,3); g.add_edge(3,1); g.add_edge(4,1); // adding an edge g.show_adj(); //showing the edges //vector<int> v; //int t; cin >> t; //while(t--) //{ // //} return(0); } #包括 #包括 #包括 #定义pi 3.14159 #定义ll long long #定义pb推回 #定义pf push_front 使用名称空间std; 类图{//图类 INTV; 列表*l; 公众: 图形(INTV) { 这个->v=v; l=新列表[v]; } void add_边(int i,int j) { l[i].pb(j); l[j].pb(i); } void show_adj() { 对于(int i=0;i

在运行我的代码时,显示在抛出';的实例后调用的terminate;std::bad#u alloc';什么():std::坏的 我的代码是C++中的一个图形的实现。我从一个网站复制了我的代码,但当我试图在本地IDE上运行它时,它抛出了一个错误 #include<iostream> #include<vector> #include<list> #define pi 3.14159 #define ll long long #define pb push_back #define pf push_front using namespace std; class Graph{ // Graph class int v; list <int> *l; public: Graph(int v) { this-> v = v; l = new list<int>[v]; } void add_edge (int i , int j) { l[i].pb(j); l[j].pb(i); } void show_adj() { for(int i = 0 ; i < v ; i++) { cout << i << "->"; for(int a : l[i]) { cout << a << ","; } cout << "\n"; } } }; int main() // main body { Graph g(4); g.add_edge(7,4); g.add_edge(7,3); g.add_edge(3,1); g.add_edge(4,1); // adding an edge g.show_adj(); //showing the edges //vector<int> v; //int t; cin >> t; //while(t--) //{ // //} return(0); } #包括 #包括 #包括 #定义pi 3.14159 #定义ll long long #定义pb推回 #定义pf push_front 使用名称空间std; 类图{//图类 INTV; 列表*l; 公众: 图形(INTV) { 这个->v=v; l=新列表[v]; } void add_边(int i,int j) { l[i].pb(j); l[j].pb(i); } void show_adj() { 对于(int i=0;i,c++,data-structures,graph,codeblocks,bad-alloc,C++,Data Structures,Graph,Codeblocks,Bad Alloc,这试图设置l[7]的值。但是l[3]是l中的最后一个元素 另外,你确定你想要一组列表吗?首先,你不应该使用那些糟糕的宏,比如pb,ll,等等。这里的人必须阅读和理解你的代码,而使用这些宏在这方面没有帮助。其次,你使用了std::vector l;而不是list*l;,然后是 l.at(i).向后推(j),该错误将显示为std::超出范围的异常。它与内存不足无关。这些可以进行自我诊断的代码编写技术无法从您正在使用的任何在线竞赛编码网站上学习。非常感谢您的回答。它确实有效。我正在学习g这就是为什么

这试图设置
l[7]
的值。但是
l[3]
l
中的最后一个元素


另外,你确定你想要一组列表吗?

首先,你不应该使用那些糟糕的宏,比如
pb
ll
,等等。这里的人必须阅读和理解你的代码,而使用这些宏在这方面没有帮助。其次,你使用了
std::vector l;
而不是
list*l;
,然后是
 l.at(i).向后推(j)
,该错误将显示为
std::超出范围的异常。它与内存不足无关。这些可以进行自我诊断的代码编写技术无法从您正在使用的任何在线竞赛编码网站上学习。非常感谢您的回答。它确实有效。我正在学习g这就是为什么我选择了这种方法。
g.add_edge(7,4);

    void add_edge (int i , int j)
    {
        l[i].pb(j);
        l[j].pb(i);
    }