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

执行结果

相关推荐
张心独酌12 小时前
Rust开发案例库-静态服务器
服务器·开发语言·rust
起个名字费劲死了12 小时前
QT + Socket 客户端/服务端 公网通讯
服务器·c++·qt·socket
做萤石二次开发的哈哈12 小时前
萤石开放平台 萤石可编程设备 | 设备 Python SDK 使用说明
开发语言·网络·python·php·萤石云·萤石
子有内涵12 小时前
【C++】红黑树实现
开发语言
降临-max12 小时前
JavaWeb企业级开发---Mybatis
java·开发语言·笔记·学习·mybatis
bing.shao12 小时前
golang 做AI任务链的优势和场景
开发语言·人工智能·golang
我是一只小青蛙88812 小时前
位图与布隆过滤器:高效数据结构解析
开发语言·c++·算法
xiaoye-duck13 小时前
吃透C++类和对象(下):初始化列表深度解析
c++
Object~13 小时前
4.const和iota
开发语言·前端·javascript
曼巴UE513 小时前
UE5 C++ GameInstanceSubsystem 在学习
c++·ue5·ue