1. 程式人生 > >確定元素的型別

確定元素的型別

功能:給定一個容器的型別,能夠給出容器元素的型別。

實現方法(技術):採用區域性特化。

#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.