[英]Rules/Guides for using C++ STL safely
我正在學習C ++ STL,有一件事不確定是如何安全地使用STL。
例如,一件事,我經常發現自己正在使用容器,而沒有執行if (!container.empty())
。 看起來很瑣碎,但卻是錯誤的來源。
是否有關於如何安全使用STL的規則或指南?
編輯:到目前為止,我發現了一個這樣的指南JSF Air Vehicle - C++ Coding Standards - Joint Strike Fighter
,但到目前為止似乎已經過時了(或者至少沒有更新,盡管大多數規則適用於這一天)
您可以閱讀有效的STL。
而不是檢查空容器,通常應編寫無需檢查即可運行的代碼。
許多實現具有調試模式,這些模式將標記使用錯誤。 了解您的lib提供的內容。 另外,某些接口也被指定為選中狀態,例如.at()
而不是索引運算符。
這里有一些編碼准則,這些准則使container.empty()
檢查大都是多余的
std::back_inserter
(序列容器)或std::inserter
(關聯容器)。 這樣可以正確擴展容器。 begin()
和end()
並確保一個空容器被類似it != end()
的語句捕獲。 這樣可以避免在空容器上出現諸如pop_back()
或erase()
類的事情。 最后的項目可能是最棘手的項目。 您真的想盡可能通用地編寫算法,以便自然地將空情況包含在內,而無需特殊的大小寫。
對於標准庫的初級/中級用戶,建議使用Scott Meyers的有效STL 。
根據我的經驗,這里有一些:
const_iterator
而無需修改任何元素 []
運算符訪問順序包含中的元素,請始終先驗證數組邊界 我記得他們會增加更多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.