如何用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;
}

执行结果

相关推荐
学逆向的2 分钟前
扩展PE头属性说明
开发语言·网络安全·pe
水饺编程3 分钟前
第5章,[Win32 章节] :圆角矩形教学插图绘制程序
c语言·c++·windows·visual studio
秋名RG10 分钟前
Java 基础语法
java·开发语言
码行山野赴时序归途14 分钟前
C 语言文件操作完全指南:从打开到关闭
c语言·开发语言
Existence_Time18 分钟前
CSP 考前复习
c++
2501_9378609421 分钟前
Java 文件操作与IO(下):字节流、字符流实战IO读写
java·开发语言·python
zerwave24 分钟前
从零实现简化 DDS 完整技术文档(含模块作用与详细注释)
linux·c++·机器人
事圆则缓27 分钟前
Kotlin 高阶工程化与 Android 深入实践
android·开发语言·kotlin
驭渊的小故事34 分钟前
java抽奖项目-奖品上传中传递参数类型的错误
java·开发语言
名字还没想好☜37 分钟前
Go 时间格式化为什么用 2006-01-02:time.Format/Parse 的参考时间、时区与解析踩坑
开发语言·后端·golang·go