#30551: (系統呼叫了 abort 函式! ) 這是甚麼意思?


s010013@stmail.hhsh.chc.edu.tw (Smith)

學校 : 國立溪湖高級中學
編號 : 174920
來源 : [101.8.83.191]
最後登入時間 :
2025-04-13 17:29:42

剛學到vector,想說用來解解看堆疊的題目,結果一直遇到這個問題,上網查好像說是跟陣列長度不夠有關,但是vector會有這種問題嗎?又該如何解決呢?

#include <iostream>
#include <vector>
using namespace std;

vector<char> vec;
vector<int>::iterator it;

int main(){
    int n;
    string a;
    cin >> n;
    for(int i = 0; i < n; i++){
        a = "";
        cin >> a;
        
        //如果是空字串
        if(a == ""){
            cout << "Yes\n";
            continue;
        }
        
        for(int j = 0; j < a.size(); j++){
            if(a[j] == '(' or a[j] == '['){
                vec.push_back(a[j]);
            }
            else{
                vec.pop_back();
            }
        }
        vec.empty() == true
        ? cout << "Yes\n"
        : cout << "No\n";
        vec.clear();
    }
}

#30552: Re: (系統呼叫了 abort 函式! ) 這是甚麼意思?


s010013@stmail.hhsh.chc.edu.tw (Smith)

學校 : 國立溪湖高級中學
編號 : 174920
來源 : [101.8.83.191]
最後登入時間 :
2025-04-13 17:29:42

我剛改了一次程式碼但仍然會遇到上述的問題,下面是我改的新程式碼

#include <iostream>
#include <vector>
using namespace std;

vector<char> vec;

int main(){
    int n;
    string a;
    cin >> n;
    cin.ignore();
    for(int i = 0; i < n; i++){
        a = "";
        getline(cin, a);
        if(a == ""){
            cout << "Yes\n";
            continue;
        }
        for(int j = 0; j < a.size(); j++){
            if(a[j] == '(' or a[j] == '['){
                vec.push_back(a[j]);
            }
            else{
                vec.pop_back();
            }
        }
        vec.empty() == true
        ? cout << "Yes\n"
        : cout << "No\n";
        vec.clear();
    }
}

#30561: Re: (系統呼叫了 abort 函式! ) 這是甚麼意思?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.12.66.21]
最後登入時間 :
2025-04-20 17:19:22


                vec.pop_back();


vec有可能是空的,對空的vector做pop_back會造成undefined behavior

#30573: Re: (系統呼叫了 abort 函式! ) 這是甚麼意思?


s010013@stmail.hhsh.chc.edu.tw (Smith)

學校 : 國立溪湖高級中學
編號 : 174920
來源 : [101.8.83.191]
最後登入時間 :
2025-04-13 17:29:42


                vec.pop_back();


vec有可能是空的,對空的vector做pop_back會造成undefined behavior


好的,謝謝提醒,已解決