C 標準庫有哪些問題?

時間 2021-05-07 03:27:26

1樓:

可能是我接觸的語言太少,但凡有string型別,功能卻弱到約等於vector, 基本只能當做buffer用的,只有cpp的標準庫。

2樓:

我來說乙個,C++11新增的std::mutex的lock()方法,連續呼叫兩次,在linux平台上會阻塞住執行緒,在windows平台上會直接崩潰。二者行為不一致,不知道這個算不算。

3樓:高博

所謂標準,就是,連問題都是標準的:你會遇到,別人也會。除非修訂標準,解決一批舊的標準問題,帶來一批新的標準問題。C++標準庫是語言標準的組成部分,三年左右會修訂一次。

4樓:暮無井見鈴

以前搞過競賽,從競賽角度來看的話:

(1) 沒有直接把數值封裝成迭代器/範圍的工具,這使得 下的演算法在競賽中有些失色。

(2) 沒有侵入式容器。

STL 容器獨佔結點並要求分配釋放。但假如把結點放在陣列(或其他管理生存期的結構)裡,只要求組織成特定的資料結構,則缺少對應工具。

侵入式容器和 STL 容器區別有點像裸指標和 unique_ptr 。侵入式容器不管理結點的生存期,只負責組織結點。這使得它通常不該直接暴露,而是作為其他結構的實現的一部分。

但競賽中結點生存期根本不是問題。

(3) 沒有不擦除型別的 scanf/printf , iostream 的通常實現又快不起來(手工分析 char 的話, iostream 因為多了間接而不太可能不更慢)。

有了提速的 to_chars 和 from_chars 還算好一點,但加入標準庫很晚,實現更晚。

( C++ 型別那麼複雜,但連做個 iostream 都顯得有些碰壁)

另外關於其他元件,很多已經被別人說過了,這裡是個人見解:

(4) any 憑什麼不能像異常物件的模式匹配一樣用基類匹配?基類匹配這個功能都做到語核裡了,為何無法復用?

(5) any 和 function 缺了 move-only 的版本。

如果選擇把可複製和不可複製的區別抹除,則可以說少了乙個 bad_copy 異常(試圖複製不可複製的被包裝物件)。

(6) 沒有管理字串編碼的框架。或者說還有 locale 相關的東西全部塞到執行時和 OS 限定裡,連基礎的平台差異包裝都看不到。

編碼轉換的幾個相關類都被棄用了,現在的適合寫法似乎是用 C 的那些函式。

補充:關於缺少數值包裝成迭代器的工具所導致的問題,可見此處

在 OI/ACM 中有哪些 STL 的技巧?

5樓:Qwerty

正在試圖用bitset<8>來造個vector的我,無意間進了這個問題看到大家都在噴vector.....

6樓:LemonHX

你試試寫類似這種函式看看你怎麼寫

階乘Haskell版本

foldr (*) 1 [1..20]

快排[|x|x<-xs ,x這個是個遺留問題沒有轉換迭代器的問題導致寫演算法不好寫

(雖然用我的輪子完全可以這樣寫)

Length 函式是個人都需要!

迭代器和陣列結合的不緊密

字串,這個我不多說,用過c艹的都知道這個要呼叫別人的庫要麼自己寫乙個。

函式內部不能建立函式!

lambda瞎捕捉,lambda不能轉換為函式指標(至少加了捕捉不能)

(想要這樣子定義函式)

auto name (auto a...){}(有生之年系列)

(這可能不算標準庫)泛型也有問題,去寫完Scala的泛型回來渾身難受......

你們發現過C 標準庫BUG嗎?

Pluto Hades 標準庫bug以前標準不太標準的時候發現過,年代久遠不好找了 最近發現了gcc內建函式的bug,就是這個 output of instrinsic xgetbv is wrongly overwritten bug是怎麼產生的呢?他們沒寫return!對,實現這個有返回值函式的...

C標準庫和Linux系統glibc C執行庫 的關係

C 標準主要由兩部分組成,一部分描述C的語法,另一部分描述C標準庫。C標準庫定義了一組標準標頭檔案,每個標頭檔案中包含一些相關的函式 變數 型別宣告和巨集定義。要在乙個平台上支援C語言,不僅要實現C編譯器,還要實現C標準庫,這樣的實現才算符合C標準。不符合C標準的實現也是存在的,例如很多微控制器的C...

學C和C 必須掌握的庫有哪些?

對於C語言來說,應當掌握的當然是C語言的標準庫 對於C 語言來說,一定要掌握的是STL,其次是boost 然後就是各取所需,有很多優秀的第三方庫,找到了就直接拿來用,別重複造輪子。乾貨 國外程式設計師整理的 C 資源大全 CSDN.NET iverson ai 我試著回答一下 基礎的STL要會用 後...