簡體   English   中英

C++ 向量和數組

[英]C++ vector and array

我試圖解決一個名為“Array Manipulation” HackerRank 問題 問題的鏈接 我在下面寫了這段代碼。 它工作正常。 但是,當我使用數組而不是向量時,我在案例 7-13 中遇到了分段錯誤。 為什么會這樣?

long arrayManipulation(int n, vector<vector<int>> queries) {
    vector<long> arr(n);
    long sum=0, max=LONG_MIN;
    for(int i=0;i<n;i++){
        arr[i] = 0;
    }
    for(int i=0;i<queries.size();i++){
        arr[queries[i][0]-1] += queries[i][2];
        if(queries[i][1]<n) arr[queries[i][1]] -= queries[i][2];
    }
    for(int i=0;i<n;i++){
        sum += arr[i];
        if(sum>max) max=sum;
    }
    return max; }
long arrayManipulation(int n, vector<vector<int>> queries) {
    long arr[n];
    long sum=0, max=LONG_MIN;
    for(int i=0;i<n;i++){
        arr[i]=0;
    }
    for(int i=0;i<queries.size();i++){
        arr[queries[i][0]-1]+=queries[i][2];
        if(queries[i][1]<n) arr[queries[i][1]]-=queries[i][2];
    }
    for(int i=0;i<n;i++){
        sum+=arr[i];
        if(sum>max) max=sum;
    }
    return max;
}

可變長度數組有一個可用堆棧限制,如果超過限制,SegV(堆棧溢出)就會發生。

如果大小足夠大,固定長度數組也會發生同樣的情況。

試試看這個問題:

long arr[10000000];  // should fail for same reason in HackerRank

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM