C++如何判断数组是不是整数
时间: 2024-09-13 17:06:01 浏览: 60
在C++中,判断数组是否包含整数通常涉及到元素类型的检查。如果你有一个已知类型的数组,比如int
数组,你可以直接使用typeid
运算符来检查每个元素是否为int
类型。例如:
#include <typeinfo>
bool isIntegerArray(const int array[], size_t size) {
for (size_t i = 0; i < size; ++i) {
if (!std::is_same<decltype(array[i]), int>::value) {
return false;
}
}
return true;
}
这个函数会遍历数组的所有元素,如果发现任何一个元素不是int
类型,它将返回false
。
如果你不确定数组的具体类型,或者需要处理不同类型的数据,可以使用模板和SFINAE技术来检查元素能否被隐式转换为int
:
template <typename T>
struct CanToInt {
using Yes = char[1];
template <typename U>
static std::true_type test(...);
template <typename U>
static std::false_type test(U* u);
static_assert(sizeof(test<T>(nullptr)) == sizeof(Yes), "Element is not an integer");
};
bool isIntegerArray(void const* data, size_t size) {
return std::all_of(data, data + size, &CanToInt<int>::test);
}
这里CanToInt
模板试图对类型做隐式转换,并通过SFINAE机制来确定类型是否可以转换为int
。
相关推荐


















