如何用c++判断一个类型是vector

如何用c++判断一个类型是vector

我们使用模板元编程来搞定

这里我们可以定义一个模板结构体 is_std_vector,并对其进行特化,以便专门处理 std::vector 类型。

.

下面是详细的实现和使用示例。

实现 is_std_vector 类型, 继承自false_type

首先,我们定义一个模板结构体 is_std_vector,并提供其特化版本用来处理 std::vector 类型。

cpp 复制代码
#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;
}

执行结果

相关推荐
禾叙_20 小时前
【netty】Channel
开发语言·javascript·ecmascript
云深处@20 小时前
【C++11】包装器,智能指针
开发语言·c++
十五年专注C++开发20 小时前
CMake进阶:SelectLibraryConfigurations模块
c++·cmake·自动化构建
量子炒饭大师20 小时前
【C++入门】Cyber深度漫游者的初始链路——【类与对象】初始化成员列表
开发语言·c++·dubbo·类与对象·初始化成员列表
独自破碎E20 小时前
BISHI43 讨厌鬼进货
android·java·开发语言
mmz120720 小时前
逆序对问题(c++)
c++·算法
化学在逃硬闯CS20 小时前
Leetcode110.平衡二叉树
数据结构·c++·算法·leetcode
谢铭轩20 小时前
题解:P8035 [COCI 2015/2016 #7] Otpor
c++·算法
纯.Pure_Jin(g)20 小时前
【Python练习四】Python 算法与进阶特性实战:数组、序列化与位运算专项练习(3道经典练习带你巩固基础——看完包会)
开发语言·vscode·python
阿猿收手吧!20 小时前
【C++】模块:告别头文件新时代
开发语言·c++