C 二維陣列排序段錯誤 之二元關係

2021-08-19 23:56:43 字數 889 閱讀 9450

需要寫乙個對向量集進行字典序排序的**。

所謂字典序

[1 1 2] < [1 1 9] < [2 0 1]

使用vector>儲存資料,使用sort(vecs.begin(), vecs.end(), comp)排序,一開始的comp函式是這麼寫的:

/* 向量字典序比較關係

* 注意:每個向量的最後乙個分量是其id,故不參與比較

*/bool comp(const

vector

&va, const

vector

&vb)else

if(va[i] > vb[i])

}return

true;

}

結果,向量個數超過一定數目(我的是400000)執行出錯了,報段錯誤,segmentation fault。小於這個數目就沒問題。比較苦惱,一度都不敢用stl了,後來師弟師妹幫指出了錯誤,叫二元關係

具體就是comp函式中的返回值型別錯了,比較函式應該返回二元關係,而不是bool型別,正確**先貼出來:

/* 向量字典序比較關係

* 注意:每個向量的最後乙個分量是其id,故不參與比較

*/bool comp(const

vector

&va, const

vector

&vb)else

if(va[i] > vb[i])

}return va[d-1] < vb[d-1];

}

果然ok了。趁熱乎記錄一下,後面深鑽一下原因。

C 之二維陣列

在第七單元中,程式清單7.10 strgback.cpp,部分如下 include char buildstr char c,int n prototype int main 輸出如下 enter a character l enter an integer 5 lllll done 請按任意鍵繼續...

PHP之二維陣列排序

很多時候,從資料庫取出來的資料是亂的,需要我們重新進行排序。這裡提供乙個公共的方法,如下 二維陣列排序 param data 資料陣列 param field 排序字段 param order 排序規則 asc desc function resort data array field sort o...

C語言之二維陣列

有兩個下標的陣列稱為二維陣列 型別 陣列名 常量表示式1 常量表示式2 第一維的長度 第二維的長度 二維陣列的元素也稱之為雙下標變數。字串是特殊的字元陣列 字串陣列是特殊字元型二維陣列 字串陣列 存放字串的陣列。定義字串陣列 char 陣列名 常量表示式 常量表示式 三維陣列遍歷 多維陣列 int ...