获取别名标准::数组的大小
Getting size of aliased std::array?
例如,考虑:
#include <array>
#include <iostream>
int main()
{
using Ram_bank = std::array<char, 0x2000>;
std::cout << "Size of ram bank is: " << Ram_bank::size() << 'n';
return 0;
}
显然,这不是有效的代码,因为Ram_bank
不是实际的类型或对象,而是别名。但是,有没有办法实现这一目标?有没有办法获取别名类型的大小?
您的代码不会失败,因为Ram_bank
是别名。它失败了,因为size()
是非静态的,您需要一个实例来调用它。科斯塔的回答就是一个例子。
或者,您可以使用std::tuple_size
:
std::cout << "Size of ram bank is: " << std::tuple_size<Ram_bank>::value << 'n';
您可以
实例化一个数组,然后获取它的大小(因为std::array::size
是一个非静态成员函数(。每个半体面的编译器都应该对此进行优化:
std::cout << "Size of ram bank is: " << Ram_bank().size() << 'n';
相关文章:
- 将值插入到标准 c++ 数组的正确索引(升序)中
- 效率:标准::数组与标准::矢量
- 多维标准::数组的可变参数模板
- 如何将临时数组传递给标准 C++17 中的函数
- 声明后,gcc 的动态大小数组是否与标准数组有效相同?
- 如何初始化一个标准::字符串数组?
- C++填充多维标准::数组
- 如何声明 2D 标准::数组
- 如何查找 2d 标准::数组中的列数
- 如何使用数组查找标准偏差
- 将积分类型的数组作为另一个不相关的积分类型的阵列进行访问的安全且符合标准的方法
- 如何将 C 数组转换为标准::initializer_list?
- 基于多维标准::数组的范围
- 两个标准::数组的交叉部分
- 如何按降序对标准数组进行排序 - C++ 11.
- 优雅地声明 2 维(甚至多维)标准::数组
- 如何将标准::数组转换为标准::元组?
- 此代码中的数组初始化样式是什么?这是标准的吗?
- 获取别名标准::数组的大小
- 标准对 char 数组作为模板参数有什么看法?