怎么判断一个变量是否是vector类型

power0811 2013-05-21 11:20:09
我想用一个函数判断一个位置类型是否是 vector
如果是就输出 is vector
否则就输出 is not vector
...全文
1281 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlert 2014-07-08
  • 打赏
  • 举报
回复
引用 26 楼 power0811 的回复:
笑什么... 呵呵 什么是small21 是编程思想吗??
我来告诉你吧,是个ID,前面回答了你问题的一个人的ID。。
sogo3q 2014-07-08
  • 打赏
  • 举报
回复
这个代码如果类型为vector<T>不是应该两个函数都可以匹配,无法判断调用哪个函数么?
引用 9 楼 rocktyt2 的回复:
template<typename T>
bool isVector(const vector<T>& v)
{
    return true;
}
template<typename T>
bool isVector(const T& v)
{
    return false;
}
慧眼识狗熊 2013-05-21
  • 打赏
  • 举报
回复
引用 17 楼 lunat 的回复:
晕倒…… 调用这个模板函数不需要参数。 [quote=引用 15 楼 small21 的回复:] [quote=引用 13 楼 lunat 的回复:] typeid只有vc支持,gcc的是typeof 这个才是标准方法: [quote=引用 9 楼 rocktyt2 的回复:]
template<typename T>
bool isVector(const vector<T>& v)
{
    return true;
}
template<typename T>
bool isVector(const T& v)
{
    return false;
}
[/quote] 就是不知道是不是vector才要判断,你这个模板参数怎么传?[/quote][/quote] 丢人了,模板类用的多,模板函数都忘了。
power0811 2013-05-21
  • 打赏
  • 举报
回复
多谢大家了 我还以为可以有个 类似python的 type 然后直接可以等于类型名那样的方法 谢谢了
lniwn 2013-05-21
  • 打赏
  • 举报
回复
type_info受编译器的影响较大,为了写出较安全的代码,建议楼主还是换条思路。
lunat 2013-05-21
  • 打赏
  • 举报
回复
晕倒…… 调用这个模板函数不需要参数。
引用 15 楼 small21 的回复:
[quote=引用 13 楼 lunat 的回复:] typeid只有vc支持,gcc的是typeof 这个才是标准方法: [quote=引用 9 楼 rocktyt2 的回复:]
template<typename T>
bool isVector(const vector<T>& v)
{
    return true;
}
template<typename T>
bool isVector(const T& v)
{
    return false;
}
[/quote] 就是不知道是不是vector才要判断,你这个模板参数怎么传?[/quote]
lunat 2013-05-21
  • 打赏
  • 举报
回复
typeid().name是实现相关的,可能返回空,也返回一个内部类型名(C++编译器内部生成的包含更多信息的类型名)
慧眼识狗熊 2013-05-21
  • 打赏
  • 举报
回复
引用 13 楼 lunat 的回复:
typeid只有vc支持,gcc的是typeof 这个才是标准方法: [quote=引用 9 楼 rocktyt2 的回复:]
template<typename T>
bool isVector(const vector<T>& v)
{
    return true;
}
template<typename T>
bool isVector(const T& v)
{
    return false;
}
[/quote] 就是不知道是不是vector才要判断,你这个模板参数怎么传?
turing-complete 2013-05-21
  • 打赏
  • 举报
回复
引用 13 楼 lunat 的回复:
typeid只有vc支持,gcc的是typeof 这个才是标准方法: [quote=引用 9 楼 rocktyt2 的回复:]
template<typename T>
bool isVector(const vector<T>& v)
{
    return true;
}
template<typename T>
bool isVector(const T& v)
{
    return false;
}
[/quote] 没听说过
lunat 2013-05-21
  • 打赏
  • 举报
回复
typeid只有vc支持,gcc的是typeof 这个才是标准方法:
引用 9 楼 rocktyt2 的回复:
template<typename T>
bool isVector(const vector<T>& v)
{
    return true;
}
template<typename T>
bool isVector(const T& v)
{
    return false;
}
慧眼识狗熊 2013-05-21
  • 打赏
  • 举报
回复

        string str = typeid(vet).name();
	if((int)str.find("vector")==-1)
		cout<<"not vector"<<endl;
	else
		cout<<"is vector"<<endl;
就这样吧。
慧眼识狗熊 2013-05-21
  • 打赏
  • 举报
回复
引用 10 楼 rocktyt2 的回复:
[quote=引用 4 楼 small21 的回复:] 给我吧,哈哈 vector是模板,判断name中是否有“vector”。
#include <iostream>
#include <vector>
using namespace std;

void main()
{
	vector<int> vet;
	cout<<typeid(vet).name()<<endl;
	system("pause");
}
不可移植代码[/quote] T("pause")?
rocktyt 2013-05-21
  • 打赏
  • 举报
回复
引用 4 楼 small21 的回复:
给我吧,哈哈 vector是模板,判断name中是否有“vector”。
#include <iostream>
#include <vector>
using namespace std;

void main()
{
	vector<int> vet;
	cout<<typeid(vet).name()<<endl;
	system("pause");
}
不可移植代码
rocktyt 2013-05-21
  • 打赏
  • 举报
回复
template<typename T>
bool isVector(const vector<T>& v)
{
    return true;
}
template<typename T>
bool isVector(const T& v)
{
    return false;
}
慧眼识狗熊 2013-05-21
  • 打赏
  • 举报
回复
一个字符串查找是否有“vector”子串。 哎。自己也要动动手的。
power0811 2013-05-21
  • 打赏
  • 举报
回复
怎么改 就是不清楚该怎么写 我用typeid试了 , 无法比较模板
super_admi 2013-05-21
  • 打赏
  • 举报
回复
引用 5 楼 power0811 的回复:
不是 我的意思是 要判断一个变量 比如 vector v; if v == vector -> cout<< is vector <<endl;这样的
太2,人家参考代码都给出来了,改改不就行了?非要人家给标准答案?
power0811 2013-05-21
  • 打赏
  • 举报
回复
不是 我的意思是 要判断一个变量 比如 vector v; if v == vector -> cout<< is vector <<endl;这样的
慧眼识狗熊 2013-05-21
  • 打赏
  • 举报
回复
给我吧,哈哈 vector是模板,判断name中是否有“vector”。
#include <iostream>
#include <vector>
using namespace std;

void main()
{
	vector<int> vet;
	cout<<typeid(vet).name()<<endl;
	system("pause");
}
power0811 2013-05-21
  • 打赏
  • 举报
回复
大哥 那我是给你分还是不给你分呢....
加载更多回复(8)

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧