![]() |
1
7
无论数组元素类型如何,这都适用于您的两种情况:
|
![]() |
2
5
在C++中,只需使用vector类。 如果你因为某种原因不能,那么你想要的东西有宏实现。 查看winnt.h中的一组宏,这些宏在C中工作,在C++中更安全: |
![]() |
3
5
使用stdlib的_countof宏。英语字母表的第8个字母
|
![]() |
4
2
常见的C代码如下
通常,你可以找到至少一个永远不会出现的字段
在我编写的代码中,任何涉及编译时大小的数组的操作都是通过类似这样的宏完成的
这个
|
![]() |
5
1
对于C,我建议realloc动态引入新变量。如果你正在静态地做某事,我建议你使用#define。我不确定我是否会称之为最佳实践,但今天,我就是这样实践的。 C++的最佳实践是使用stl::vector。 A reference here |
![]() |
6
1
我几乎总是使用包装器类(MFC CArray、stl vector等),除非有特殊原因。没有太多的开销,你会得到很多调试检查,你可以动态调整大小,获取大小很容易,等等。 |
![]() |
7
1
对于C++,使用std::vector使用C数组没有真正的意义。std::vector具有(几乎)与C数组相同的性能,它将:
这甚至没有考虑到与std::vector相关的通用算法。 现在,使用C你至少可以在两个方面写得更好。首先,将define替换为真正的常量变量:
使用真变量将为您提供更多的类型安全性,并且不会污染全局范围。为了最小化依赖关系,你甚至可以在头部声明变量,并在源代码中定义它们:
这样,您就可以在一个源中更改数组的大小,而无需重新编译使用它的所有源。缺点是MAXPLAYERS在编译时不再为人所知(但是,这真的是缺点吗?) 请注意,第二种类型的数组不能动态增长。sizeof(至少在C++中)在编译时计算。对于不断增长的数组,malloc/realloc/free是C中的选择,std::vector(或任何其他通用STL容器)是C++中的选择。 |
![]() |
8
1
请确保也阅读 this question's answers -阵列大小问题的许多解决方案 是 便携式。
我特别喜欢
|
![]() |
9
0
除了到目前为止的答案之外,如果你在C++中使用T[]数组: 使用模板参数推导来推断数组大小。它更安全:
你的
|