Мой код представляет собой реализацию графа на С++. Я скопировал свой код с веб-сайта, но когда я пытаюсь запустить его в своей локальной среде 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);
}
Мой код показывает
завершение вызывается после создания экземпляра 'std::bad_alloc' what(): std::bad_alloc
Я понял, что это связано с нехваткой памяти или с выпадением переменных из функции main()
, но я не могу понять, как решить проблему в этой конкретной ситуации. Если это актуально, я работаю на компьютере с Windows.
Пожалуйста, помогите мне понять, в чем проблема.
Если вы можете опубликовать фрагменты кода, мне будет очень легко.
pb
,ll
и т. д. Люди здесь должны читать и понимать ваш код, и использование этих макросов в этом не поможет. Во-вторых, если вы использовалиstd::vector<std::list<int>> l;
вместоlist <int>*l;
, а затемl.at(i).push_back(j);
, ошибка будет показана вам как исключениеstd::out_of_range
. Это никак не связано с нехваткой памяти. Эти методы написания кода, которые могут выполнять самодиагностику, не могут быть изучены на любом веб-сайте онлайн-соревнований по программированию, который вы используете. - person PaulMcKenzie   schedule 08.03.2021