C++如何判断数组是不是整数
时间: 2024-09-13 15:06:01 浏览: 31
在C++中,判断数组是否包含整数通常涉及到元素类型的检查。如果你有一个已知类型的数组,比如`int`数组,你可以直接使用`typeid`运算符来检查每个元素是否为`int`类型。例如:
```cpp
#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`:
```cpp
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`。