簡體   English   中英

錯誤“無法從“int[2]”類型的返回值轉換為函數返回類型“vector”<int> &#39;&quot;

[英]Error "No Viable Conversion From Returned Value of Type 'int[2]' to function return type 'vector<int>'"

這里是編碼新手,我在 HackerRank 上遇到了問題。 它告訴我創建一個函數來比較 2 個數組的元素並返回一個數組中的 2 個值。 但是,我收到“無可行轉換”錯誤。 當我將“分數”的類型更改為向量時,出現編譯器錯誤,顯示“分段錯誤”。 我想知道這是什么,為什么會發生,以及我可以在哪里找到更多相關信息。

vector<int> compareTriplets(vector<int> a, vector<int> b) {
int sA = 0, sB = 0;
vector<int> scores;
for(int i = 0; i <3; i++){
    if (a[i] > b[i]){
        sA++;
    }else{
        sB++;
    }
}
scores[0] = sA;
scores[1] = sB;
return scores;}

問題是你創建了一個大小為 0 的向量(一個空向量),然后試圖將元素分配給它不存在的第 0 個和第一個索引。 你應該使用:

//pass the vector by reference instead of by value
vector<int> compareTriplets(const vector<int> &a,const vector<int> &b) {
int sA = 0, sB = 0;
vector<int> scores(2); //create vector of size 2
for(int i = 0; i <3; i++){
    if (a[i] > b[i]){
        sA++;
    }else{
        sB++;
    }
}
scores[0] = sA;
scores[1] = sB;
return scores;
    
}

創建特定大小的std::vector時。 其次,您應該通過引用傳遞向量ab ,而不是像我在示例中所做的那樣通過值傳遞。 這樣它會更快。

暫無
暫無

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

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