这些天,我正在阅读C ++入门。该书说,要获得C样式数组的长度,可以使用函数std :: begin和std :: end获得两个指针并将其相减。但是,我知道sizeof(a)/sizeof(a[0])如果aC型数组也可以使用。那么哪种方法更好,或者它们之间没有什么区别呢?
当今最好的方式(C ++ 17和更高版本)是std::size:
#include <iterator>
...
int arr[5];
static_assert(std::size(arr) == 5);
Run Code Online (Sandbox Code Playgroud)
如果您没有访问C ++ 17的权限,也可以轻松滚动自己的代码:
template <class T, size_t N>
constexpr size_t size(const T (&arr)[N]) { return N; }
Run Code Online (Sandbox Code Playgroud)
更好的是,只需使用std::array,并使用它的size成员:
std::array<int, 5> arr;
static_assert(arr.size() == 5);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |