我想知道一个变量的类型
I want to know the type of a variable
我在研究C++11库,我不擅长处理C++对象和模板,但我试图读取变量的类型并运行不同的代码,但这里有一个例子可以更好地解释:
if(is_scalar<typeid(list)>)
cout << list << endl;
else
for(...)
cout << list[i] << endl;
我正在尝试做类似的事情,我认为函数is_scalar正是我所需要的,因为我需要将向量、数组和列表从int、double或float等中分离出来。很难想象在同一个程序中有不同类型的同一个变量,但我正在尝试在运行时更改它(仍然不起作用)或使用预处理器定义(这导致了我现在的问题)。
我解决了我的问题,我创建了这个代码,我必须修改一点
#include <iostream>
#include <vector>
using namespace std;
template< bool B > struct Algorithm {
template<class T1> static int do_it (T1 & a) {
for (int _n(((int)((a).size()))-1), i(0); i <= _n; i++)
cout << *(next(a.begin(),i)) << endl;
cout << endl;
}
};
template<> struct Algorithm<true> {
template<class T1> static int do_it (T1 a) { cout << a << endl; }
};
template<class T1>
int elaborate (T1 A)
{
return Algorithm<std::is_scalar<T1>::value>::do_it( A ) ;
}
int main(){
int a = 42;
vector<int> b;
b.push_back(1);
b.push_back(2);
elaborate(a);
elaborate(b);
return 0;
}
最后,decltype
没有工作,因为编译器试图"读取"从未"使用"过的代码。
您尝试过使用decltype吗?这可能会对你有所帮助。
http://en.cppreference.com/w/cpp/language/decltype
相关文章:
- 用C++中的一个变量定义一个常量
- 一个变量的输入值也会保存到另一个变量中
- 将双精度变量设置为另一个变量的值
- 对具有相同方法的不同类使用一个变量
- 为什么一个变量获得与另一个值相同的值
- 尝试在 C++ 中为 ifstream 提供一个变量
- 类中的一个变量显示,但另一个不显示
- 声明一个变量,该变量在 c++ 或 c 中具有值,当程序终止时不会被销毁
- c++问题:给一个变量赋值后,另一个变量发生了变化
- 如何将一个变量用于父类和派生类
- 如何在循环中使用scanf,将值存储到一个变量中,然后打印出来?
- 我如何将一个变量与另一个变量进行比较,例如我想如果(var1 > var2 x 1),然后执行此 c++
- 如何在一个函数中定义一个变量,并在另一个函数中访问和更改它?(C++)
- 如果一个变量在它之前释放了另一个(相同的数据类型)变量,如何将其分配给内存?
- 迭代器或反向器的一个变量
- fstream库,试图创建一个变量名为(c++)的文件
- 如何在 c++ 中将两个不同类型的变量分配给一个变量
- 如何将一些变量放在一个变量中?
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- 如何用索引命名一个变量来存储输入 mxArray?