我应该使用什么类型的索引变量

And*_*edd 6 c++ cuda

这是一个最佳实践问题.我正在制作一个阵列

type * x = malloc(size*sizeof(type));
Run Code Online (Sandbox Code Playgroud)

AFAIK sizeof给出size_t的返回值.这是否意味着我应该使用size_t来声明或传递大小?另外,当索引数组时,我还应该使用size_t作为索引变量吗?这些最佳做法是什么?这不是他们在学校教的东西,而现在我正在深入了解我想知道的严肃的c ++.

此外,如果有人参考我可以找到这种东西的最佳实践,它会有帮助吗?程序员预订的礼仪.

编辑:malloc应该是cudaHostAlloc,或cudaMalloc,因为我正在开发一个同时在设备和主机上存储数组的类,并同时更新它们.所以malloc在这里只是我实际要做的事情的持有者.

Ste*_*end 7

通常,我使用任何最小化隐式或显式强制转换和警告错误的数量.一般来说,有很好的理由可以按照自己的方式输入内容. size_t对于数组索引来说是一个很好的选择,因为它是unsigned你通常不想访问的myarray[-1],比方说.

顺便说一句,因为这是C++,你应该养成使用malloc(free)的习惯,这是CRT(C运行时库)的一部分.使用new(delete),最好使用智能指针,以最大限度地减少手动内存处理.

一旦掌握了基础知识,Scott Meyers的有效C++就是一个很好的实践参考(语言特定).合乎逻辑的下一步是有效STL.

  • 是 - 或者,你可以使用`array :: rbegin()`和`array :: rend()` (2认同)