簡體   English   中英

將C ++僅用於STL容器是不好的做法?

[英]Is it Bad Practice to use C++ only for the STL containers?

首先是一點背景......

在下文中,我使用C,C ++和Java進行編碼(通用)算法,而不是使用接口的gui和花哨程序,而是使用簡單的命令行算法和庫。

我開始學習Java編程。 我對Java非常了解,並且我學會了很多地使用Java容器,因為它們往往會降低簿記的復雜性,同時保證良好的性能。 我間歇性地使用了C ++,但我肯定不像Java那樣好,而且感覺很麻煩。 我不知道C ++是否可以在不需要查找每個函數的情況下工作,因此我很快就恢復了對Java的支持。

然后我突然過渡到匯編語言中的破解和黑客攻擊,因為我覺得我過於關注過於高級別的語言而且我需要更多關於CPU如何與內存交互的經驗以及什么是1的真實情況0和0。 我不得不承認這是我迄今為止用過的最具教育性和趣味性的計算機之一。

出於顯而易見的原因,我無法每天使用匯編語言進行編碼,它主要用於娛樂轉移。 通過這次經歷了解了有關計算機的更多信息之后,我意識到C ++與Java相比更接近“1和0的水平”,但我仍覺得它非常鈍,就像瑞士軍刀太多了小玩意做任何優雅的任務。 我決定試試普通香草C,我很快就愛上了。 在簡單性和足夠的“微管理者”之間,這是一個快樂的媒介,不能抽象出真正發生的事情。 但是,我確實錯過了關於Java的一件事:容器。 特別是,一個動態擴展的簡單容器(如stl向量)非常有用,但每次必須在C中實現時非常痛苦。 因此,我的代碼目前看起來幾乎完全是C,其中引入了C ++容器,這是我在C ++中使用的唯一功能。

我想知道它在實踐中是否考慮使用C ++的一個特性,並忽略其余的支持C類型代碼?

簡短的回答是,“這不是真正使用C ++的最有效方法。”

正確使用時,強類型系統,通過引用傳遞的能力以及RAII等慣用語使C ++程序更可能是正確的,可讀的和可維護的。

沒有人可以阻止你以你想要的方式使用這種語言。 但是,您可能通過不學習和利用實際的C ++功能來限制自己。

如果你編寫其他人必須閱讀和維護的代碼,他們可能會喜歡使用“真正的C ++”而不是“C with classes”(用前一個評論者的話來說)。

對我來說似乎很好。 這是我真正使用的C ++的唯一部分。

現在,我正在寫一個數字計算器。 沒有多態,沒有控制委托,沒有交互。 <iostream>是一個瓶頸所以我在C中重寫了I / O.

這些函數主要位於一個代表工作線程的類中。 因此,這不是具有線程局部變量的OO。

除了vector ,我使用<algorithms>非常重要。 但是重型數據結構是用簡單的C語言編寫的。主要是循環的單鏈表,它甚至不能輕易地具有不同的begin()end() ,這意味着不僅容器而且序列(和for循環)都關閉17626.8-2006。 然后模板幫助預處理器生成主內循環。

解決問題最自然的方法可能是正確的。 您不希望解決方案來搜索問題。 學習使用C ++是好的,但是面向對象適合於某些問題而不適用於其他問題。

另一方面,在C ++程序中使用stdlib.h中的bsearch是錯誤的。

您應該以對您最有意義的任何方式使用C ++。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM