确定元素的类型

版权声明:本文为博主原创文章,如有需要,可以转载,但请注明出处。 https://blog.csdn.net/xunye_dream/article/details/82951484

功能:给定一个容器的类型,能够给出容器元素的类型。

实现方法(技术):采用局部特化。

#include <iostream>
#include <vector>
#include <stack>
#include <list>
#include <typeinfo>

using namespace std;

template<typename T>
struct ElementT;       //base template

template<typename T>
struct ElementT<vector<T> >
{
	typedef T Type;
};

template<typename T>
struct ElementT<stack<T> >
{
	typedef T Type;
};

template<typename T>
struct ElementT<list<T> >
{
	typedef T Type;
};

template<typename T>
void printElementType(T const& c)
{
	cout << "Container of " << typeid(typename ElementT<T>::Type).name() << " elements." << endl;
}

int main(int argc, char **argv)
{
	stack<double> s;
	printElementType(s);

	vector<float> vf;
	printElementType(vf);

	return 0;
}

输出结果:

Container of d elements.
Container of f elements.

猜你喜欢

转载自blog.csdn.net/xunye_dream/article/details/82951484