如何用c++判断一个类型是vector
我们使用模板元编程来搞定
这里我们可以定义一个模板结构体 is_std_vector
,并对其进行特化,以便专门处理 std::vector
类型。
.
下面是详细的实现和使用示例。
实现 is_std_vector
类型, 继承自false_type
首先,我们定义一个模板结构体 is_std_vector
,并提供其特化版本用来处理 std::vector
类型。
#include <type_traits>
#include <vector>
// 默认情况下,is_std_vector<T> 继承自 std::false_type
template <typename T> struct is_std_vector : false_type {};
// 特化版本,当 T 是 std::vector<T> 时,继承自 std::true_type
template<typename T> struct is_std_vector<vector<T>> : true_type {};
// 辅助变量模板,用于简化使用
template<typename T>
constexpr bool IS_VECTOR = is_std_vector<T>::value;
int main()
{
vector<int> a = { 1, 2, 3 };
if (IS_VECTOR<decltype(a)>)
cout << "vector" << endl;
else
cout << "not vector" << endl;
int b = 1;
if (IS_VECTOR<decltype(b)>)
cout << "vector" << endl;
else
cout<< "not vector" << endl;
return 0;
}
执行结果