為啥要用C艸不用C?
在很多時候,有人會有這樣的疑問
——為什么要用C++?C++相對于C優(yōu)勢是什么?
最近兩年一直在做Linux應(yīng)用,能明顯的感受到C++帶來到幫助以及快感
之前,我在文章里面提到環(huán)形隊列
用C實現(xiàn)到環(huán)形隊列,是考驗一個工程師的能力,但是到實際項目后,你還需要花時間在設(shè)計這些基礎(chǔ)的東西,就會顯得時間非常緊張。
在C++里面,很容易就可以給你搞一個Queue給你使用
如下

當(dāng)然,除了使用Queue,你還有很多存儲數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)選擇
——使用std::list:
如果你需要在隊列中間插入或刪除元素,那么可以考慮使用std::list。std::list是一個雙向鏈表,它可以方便地在任意位置插入或刪除元素。然而,它的內(nèi)存開銷較大,且不支持隨機訪問。
——使用數(shù)組或std::vector:
如果你需要一個固定大小的隊列,那么可以考慮使用數(shù)組或std::vector實現(xiàn)。這種實現(xiàn)方式具有較好的內(nèi)存連續(xù)性,有助于提高緩存命中率。然而,如果隊列需要動態(tài)調(diào)整大小,這種實現(xiàn)方式可能會導(dǎo)致額外的內(nèi)存復(fù)制開銷。
——使用環(huán)形緩沖區(qū):
環(huán)形緩沖區(qū)是一種特殊類型的隊列,它的頭部和尾部是相互連接的。這種實現(xiàn)方式適用于數(shù)據(jù)流的讀寫操作,因為它可以無縫地處理緩沖區(qū)的溢出情況。實現(xiàn)環(huán)形緩沖區(qū)可以使用數(shù)組或std::vector作為底層存儲結(jié)構(gòu)。
——使用并發(fā)隊列:
如果你需要在多線程環(huán)境中使用隊列,那么可以考慮使用并發(fā)隊列。C++標(biāo)準(zhǔn)庫中的std::queue并不是線程安全的,但你可以使用第三方庫,如Intel TBB或Microsoft PPL,或者使用C++11的std::mutex(鎖)和std::condition_variable來實現(xiàn)自己的線程安全隊列。
——
做項目和研究東西是兩回事,就好比開車,短距離開車沒有自動駕駛感覺沒問題,很多時候還覺得挺爽,但是如果把距離拉長,項目復(fù)雜度提高,沒有自動駕駛能把人搞廢掉。
而C++就好比一輛有ACC功能的汽車,他能滿足你的大項目復(fù)雜度需求,不需要再去造一些重復(fù)的輪子。
并且,你可以大膽的相信std給你提供的東西。
當(dāng)然了,至于那些遇到的很難解決解釋的bug問題,我們這里就不討論了,只能說明自動駕駛存在的某些bug。
