為什麼c STL演算法傳入的可調物件的形參與容器元素型別不匹配時,編譯器沒有產生警告?

時間 2021-09-09 10:08:06

1樓:d41d8c

開-Wsystem-headers就有警告了。

開了-Wsystem-headers應該就知道為什麼預設不啟用了。系統標頭檔案有時不得不用會引起警告的擴充套件,再加上不追求零警告,開了-Wsystem-headers那輸出就不能看了……

2樓:張婷

標準庫定義了一組泛型演算法:因為它們實現共同的操作,所以稱之為「演算法」;而「泛型」指的是它們可以操作在多種容器型別上,不但可作用於標準庫型別,還可用在內建陣列型別、甚至其他型別的序列上。大多數演算法是通過遍歷由兩個迭代器標記的一段元素來實現其功能。

使用泛型演算法必須包含標頭檔案 algorithm :

#include

標準庫還定義了一組泛化的算術演算法(generalized numeric algorithm),其命名習慣與泛型演算法相同。使用這些演算法則必須包numeric標頭檔案:

#include

區別帶乙個函式引數的演算法版本:大部分演算法會提供比較或測試函式取代操作符使用的版本,此版本在名字中加了 _if 字尾。

區別是否實現複製的演算法版本:很多演算法將重新排列的元素寫回其輸入範圍。標準庫提供了複製版本,此版本的演算法在名字中新增了 _copy 字尾。

迭代器實參型別

通常泛型演算法都是在標記容器(或其他序列)內的元素範圍的迭代器上操作的。標記範圍的兩個實參型別必須精確匹配,它們必須指向同乙個容器中的元素(或者超出容器末端的下一位置),並且如果兩者不相等,則第乙個迭代器通過不斷地自增,必須可以到達第二個迭代器。對於帶有兩對迭代器引數的演算法,如find_first_of:

每對迭代器中,兩個實參的型別必須精確匹配,但不要求兩對之間的型別匹配。特別是,元素可儲存在不同型別序列中,只要這兩序列的元素可以比較即可。

為什麼蘇聯傳入的各種縮寫名詞,只有CCCP是西里爾字母?

四體不勤 並不是保留了西里爾字母,而是剛好這個縮寫在拉丁字母系統有同形異義的字母而已。就像漢語一直在吸收日語的和制漢字詞語,但真會讀的沒幾個。所以人們就會自然用漢語裡這個字的讀音和寫法去讀寫,而這個詞本來的讀法和寫法並不會引起他們的注意。你要問大多數刷CCCP的人這東西怎麼讀,能說出Soyuz So...

為什麼說國家是階級矛盾不可調節的產物?

照妖鏡 國家是建立於暴力基礎之上的機構,其所有非暴力的手段,都是用暴力來背書的。這意味著,一切爭議,最後實際上都是以暴力來裁決的。階級矛盾無法解決,就必然是其中一方以暴力震懾另一方,使得另一方服從。階級矛盾不可調節,那就壓住它,暫時不讓它爆發出來。這就是國家的本質。 東門大官人 有人的地方就有江湖,...

婆媳之間為什麼有不可調和的矛盾,小姑子在其中起到什麼樣的作用

這種事和小姑子有什麼關係?不去插手你們的事就可以了。因為不管怎麼調節,哪方都會說什麼吧。距離產生美。 剛剛又來的新鮮事。忍不住來發乙個。我婆婆省會城市農村,我是沿海小縣城市區,小姑子大學本科畢業後在老家省會城市的市區工作。我婆婆在我家,看見好吃的就要給小姑子帶回去,美其名曰這麼遠。我之前主動買的海鮮...