簡體   English   中英

我應該使用什么類型的索引變量

[英]What type should I use for an index variable

這是一個最佳實踐問題。 我正在制作一個陣列

type * x = malloc(size*sizeof(type));

AFAIK sizeof給出size_t的返回值。 這是否意味着我應該使用size_t來聲明或傳遞大小? 另外,當索引數組時,我還應該使用size_t作為索引變量嗎? 這些最佳做法是什么? 這不是他們在學校教的東西,而現在我正在深入了解我想知道的嚴肅的c ++。

此外,如果有人參考我可以找到這種東西的最佳實踐,它會有幫助嗎? 程序員預訂的禮儀。

編輯:malloc應該是cudaHostAlloc,或cudaMalloc,因為我正在開發一個同時在設備和主機上存儲數組的類,並同時更新它們。 所以malloc在這里只是我實際要做的事情的持有者。

通常,我使用任何最小化隱式或顯式強制轉換和警告錯誤的數量。 一般來說,有很好的理由可以按照自己的方式輸入內容。 size_t是數組索引的一個很好的選擇,因為它是unsigned ,你通常不想訪問myarray[-1] ,比方說。

順便說一句,因為這是C ++,你應該養成使用mallocfree )的習慣,它是CRT(C運行時庫)的一部分。 使用newdelete ),最好使用智能指針,以最大限度地減少手動內存處理。

一旦掌握了基礎知識, Scott Meyers的有效C ++就是一個很好的實踐參考(語言特定)。 合乎邏輯的下一步是有效STL

關於您的后續問題:

我用於一般高級編程“當前良好實踐”的最佳參考類型是:

代碼由Steve McConnell完成(國際標准書號0-7356-1967-0)

我一直都在引用它。 當我的公司正式編寫其編碼標准時,我是根據它編寫的。 它沒有像設計或體系結構那樣多,但是為了實際敲打代碼,本書被恰當地命名。

cudaMalloc的大小類型為size_t ,因此為了保持一致性,這就是你應該用於索引的內容。

好吧,既然你已經放棄了最佳實踐,甚至是好的練習,那么使用malloc ...為什么它真的重要?

也就是說,我通常使用size_t,除非我需要一種可以對各種半稀有條件產生負面影響的類型。

我更喜歡int over size_t有幾個原因:

  1. 原始類型應該是首選,除非typedef提供了一些基本上新的東西, size_t不是
  2. size_t在不同系統上的定義不同,可能會給某些開發人員帶來驚喜
  3. signed int避免for (size_t i=9; i>=0; --i)錯誤,以及條件中的其他錯誤,例如if (result < 1)if ((i-2)/2 < 1)

size_t是一種無用的抽象,通過使下溢靜音來掩蓋不需要的行為

暫無
暫無

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

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