Ошибка Thread 1: EXC_BAD_ACCESS (code=1, address=0x0) Xcode c++

133
22 апреля 2022, 10:00
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string mat1(string s) {
    string s2 = "";
    int i = 0;
    while (s[i] != ' ') {
        s2 += s[i];
        i++;
    }
    return s2;
}
string mat2(string s) {
    string s2 = "";
    int i = 0;
    while (s[i+1] != '>') {
        i++;
    }
    while (s[i] == ' ') {
        i++;
    }
    for (;i<s.size();i++) {
        s2 += s[i];
    }
    return s2;
}
int main() {
    int m;
    cin >> m;
    string s,s1,s2;
    vector <string> A,B(m);
    for (int i=0;i<m;++i) {
        cin.ignore();
        getline(cin,s);
        A[i] = mat1(s);
        B[i] = mat2(s);
    }
    getline(cin,s1);
    getline(cin,s2);
}

Есть программа, ошибку выдает после прохождения функции mat1, при присваивании A[i] значение функции.

Answer 1

Вектор пустой. Добавлять надо иначе -

A.push_back(mat1(s));

Ну, или изначально чтобы было достаточно элементов в векторе -

vector <string> A(m),B(m);

Только вот mat2 у вас работать не будет... Если в строке нет символа '>' - куда вы попадете в первом же цикле?...

READ ALSO
Не работает простейший алгоритм

Не работает простейший алгоритм

Есть простейший алгоритм на c++, который заполняет и выводит двухмерный динамический массив числами от 1 до n*m, но не работает с некоторыми...

157
Как в конструкторе класса инициализировать поле класса, являющееся объектом и созданное на стеке?

Как в конструкторе класса инициализировать поле класса, являющееся объектом и созданное на стеке?

Как в конструкторе класса инициализировать поле класса, являющееся объектом класса и созданное на стеке? Следующий код вызывает ошибку

97
Алгоритм Флойда,вывод матрицы расстояний

Алгоритм Флойда,вывод матрицы расстояний

Реализовал алгоритм Флойда, но задался вопросом,как сделать помимо вывода матрицы кратчайших путей, ещё и вывод матрицы расстояний, который...

110