數(shù)據(jù)結構中經(jīng)常使用枚舉類型來表示數(shù)據(jù)中的常量值。
關鍵詞:C語言有32個關鍵詞,比如intcharfloat
C語言有上百個標準庫函數(shù),分布在不同的庫文件中。目前,大多數(shù)系統(tǒng)和程序肯定與C99標準兼容,但2011年已經(jīng)發(fā)布了更新版本,一些遺留系統(tǒng)可能不一定支持最新的功能。不同的功能有不同的應用。是否說哪些比較常用,要看你的工作性質(zhì)。
一般來說,至少在基本編程中,stdio中的I/O(要么是控制臺,要么是文件),stdlib中的各種通用工具(比如分配堆內(nèi)存),string中的字符串處理,
是的。
以C語言為例,在內(nèi)存中創(chuàng)建一個字符串,至少需要一個char數(shù)組來存儲,因為要存儲結束標識符;枚舉實際上是一個結構,里面的枚舉項可以定義為整數(shù),比字符串的存儲更方便,成本更低。
而且字符串作為枚舉時容易拼錯,枚舉都定義為數(shù)值常量,編譯器編譯時容易發(fā)現(xiàn)錯誤,提示開發(fā)者及時改正,方便維護。
Java編程中有。
如果可以選擇,使用enum是比String更好的方法。它的性能比String好,而且也是類型安全的。如果參數(shù)集是有限的并且在編譯時已知,則使用enum。但是如果參數(shù)集是未知的或者在編譯時是開放的,那么除了使用字符串之外別無選擇。
結論是會有性能損失。
主要比較兩個對象。
枚舉可以理解為singleton。直接比較對象時,可以簡單理解為整數(shù)對象比較。時間復雜度為1。
字符串,實際上用的是equals方法,你看了代碼應該知道它是逐字符比較的。時間復雜度為n,字符串越長越耗時。
作為map的鍵,或者使用switch語句,這樣的性能差別不小。
損失不大的性能損失最大的在于磁盤IO和網(wǎng)絡IO。
那里這真的沒必要擔心。自己測試一下就好了。