5 / 4 / 1
Регистрация: 19.10.2019
Сообщений: 55
1

Ошибка исполнения при вызове метода push_back

25.11.2019, 20:43. Показов 571. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
После запуска и ввода первого элемента программа вылетает, в чём ошибка?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<bits/stdc++.h>
using namespace std;
 
const int N = 100;
vector < vector < int > > graph;
bool visited[N];
vector <int> pred;
vector <int> dist;
vector <int> step;
queue <int> q;
 
int v, rb, i, v1, v2, start, fin;
 
void BFS( int st )
{
    int top;
    visited[st] = true;
    q.push(st);
    while ( !q.empty() )
    {
        top = q.front();
        cout << top << " ";
        q.pop();
        for ( auto r : graph[top] )
        {
            if ( !visited[r] )
            {
                q.push(r);
                visited[r] = true;
            }
        }
    }
}
 
int main()
{
    cin >> v >> rb;
    for ( i = 1; i <= rb; i++ )
    {
        cin >> v1 >> v2;
        graph[v1].push_back(v2);
        graph[v2].push_back(v1);
    }
    cin >> start;
    BFS(start);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2019, 20:43
Ответы с готовыми решениями:

Меняют ли элементы в vector свои адреса при вызове метода push_back?
Допустим я определил вектор и указатель на один из его элементов: vector&lt; int &gt; v( 10 ); int* p =...

Ошибка при вызове метода
Не пойму в чем ошибка... #include &lt;vector&gt; #include &lt;iostream&gt; template &lt;typename T&gt; class...

Ошибка при вызове метода класса
ошибка возникает когда я вызываю метод ti #include &lt;iostream&gt; using namespace std; class...

Ошибка при вызове метода QueryInterface
пишу код: .... IDirect3D9ExOverlayExtension *pOverlay = NULL; // Check specific overlay...

3
фрилансер
5495 / 5091 / 1047
Регистрация: 11.10.2019
Сообщений: 13,315
25.11.2019, 21:02 2
graph - пустой. Некорректное обращение в строках 41,42, 24 , нужно проверять выход за границы вектора
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
26.11.2019, 01:35 3
граф как задан? это ж не матрица смежности ?

Добавлено через 1 минуту
а, понял, списком вершин. Ну тогда этот список надо для начала подогнать под число вершин!
0
Just Do It!
3837 / 2283 / 636
Регистрация: 23.09.2014
Сообщений: 7,051
Записей в блоге: 2
26.11.2019, 14:24 4
Цитата Сообщение от TinyColonel Посмотреть сообщение
Ошибка исполнения при вызове метода push_back
Демка о способах хранения данных о нодах внутри двумерного вектора.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
///----------------------------------------------------------------------------|
/// Думерный массив на векторах.
///----------------------------------------------------------------------------:
#include<bits/stdc++.h>
#define BANNER(a,b,c)   std::cout <<"\n"<< a <<"\n"<< b <<"\n"<< c <<"\n";
 
using namespace std;
 
const int N = 100;
vector<vector<int>> graph;
bool visited[N];
vector <int> step;
queue  <int> q;
 
/// Это без исправлений!!!
void BFS( int st )
{
    int top;
    visited[st] = true;
    q.push(st);
    while ( !q.empty() )
    {
        top = q.front();
        cout << top << " ";
        q.pop();
        
        for ( auto r : graph[top] )
        {
            if ( !visited[r] )
            {
                q.push(r);
                visited[r] = true;
            }
        }
    }
}
 
///----------------------------------------------------------------------------:
int main()
{   setlocale(0, "");
                                     BANNER(        
    "///---------------------------------|",
    "/// Инициализация графа graph.      |",
    "///---------------------------------:")
    /// На все пары два вектора.
    /// Первый вектор хранит начальные номера нодов ребер.
    /// Второй вектор хранит конечные  номера нодов ребер.
    graph.push_back(vector<int>()); 
    graph.push_back(vector<int>());
    
    int rb; cout << "rb = "; cin >> rb; cout << "------------:\n";
    for (int i = 0; i < rb; i++ )
    {
        int v1; cout << "v1 = "; cin >> v1;
        int v2; cout << "v2 = "; cin >> v2;
        
        graph[0].push_back(v1);
        graph[1].push_back(v2);
    }
    
    ///---------------------------------|
    /// Вывод графа на экран.           |
    ///---------------------------------:
    cout << "\n";
    int j = 0;
    for     ( auto r : graph )
    {   
        cout << "Вектор - " << j << ": ";
        for ( auto a : r)
        {   cout << a << " --- ";
        }
        j++;
        cout << "\b\b\b\b    \n";
    }
  
                                     BANNER( 
    "///---------------------------------|",
    "/// Альтернативный вариант.         |",
    "///---------------------------------:")
    /// На каждую пару свой вектор.
    /// ЭТО ЛУЧШИЙ ВАРИАНТ!
    /// Потому что по сути вектор представляет нод
    /// с любым возмжным количеством ребер.
    vector<vector<int>> graph_b;
    
    cout << "rb = "; cin >> rb; cout << "------------:\n";
    for (int i = 0; i < rb; i++ )
    {   graph_b.push_back(vector<int>());
        
        int v1; cout << "v1 = "; cin >> v1;
        int v2; cout << "v2 = "; cin >> v2;
        
        graph_b.back().push_back(v1);
        graph_b.back().push_back(v2);
    }
    
    ///---------------------------------|
    /// Вывод графа на экран.           |
    ///---------------------------------:
    cout << "\n";
    j = 0;
    for     ( auto r : graph_b )
    {   
        cout << "Вектор - " << j << ": ";
        for ( auto a : r)
        {   cout << a << " --- ";
        }
        j++;
        cout << "\b\b\b\b    \n";
    }
    
    int start; cout << "\nstart = "; cin >> start;
    BFS(start);
}
Ниже иллюстрация разницы в СОГЛАШЕНИЯХ о том,
как вы будете хранить инфу о вершинах
внутри двумерного вектора:
Ошибка исполнения при вызове метода push_back


а ваш пример не дописан и разобрать ДОСТОВЕРНО что конкретно вы хотели,
мне было затруднительно.
0
26.11.2019, 14:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2019, 14:24
Помогаю со студенческими работами здесь

Ошибка при вызове метода класса
После вызова метода getSize() на вызове метода getData() программа крашится. Если вызвать объект...

Ошибка при вызове метода класса, при чтении из файла
добрый день, пытаюсь считать данные из и запихнуть их в список в файле у меня вот такие данные...

При вызове метода функционального объекта в шаблонной функции ошибка компиляции C2039
Объект класса Entry - это запись в журнале экзаменационной сессии: номер зачетки, фамилия, курс,...

Ошибка при вызове метода класса в методе другого класса
Господа программисты, возникла такая проблема. При вызове метода класса в методе другого класса...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru