C++模板,只知到变量迭代器类型,如何定义临时变量
C++模板,只知到变量迭代器类型,怎么定义临时变量
比如下面的这种情况
template<typename Iterator>
void swap(Iterator left, Iterator rigth)
{
}
不要说在调用另一个swap或者直接用变量类型,这只是举个例子
用模板元实现? 怎么写?
------解决方案--------------------
就是直接赋值
因为iterator应该已经重载了operator=
如果是自己定义的数据类型就要自己重载
------解决方案--------------------
template<typename T>
struct ITERATOR
{
typedef T TYPE;
};
template<typename T>
struct Vector
{
typedef ITERATOR<T> Iterator;
}
template<typename Iterator>
void swap(Iterator left, Iterator rigth)
{
Iterator::TYPE temp = *left;
*left = *right;
*right =tmp
}
Vector<int>::Iterator iter1, iter2;
swap(iter1, iter2);
------解决方案--------------------
#include <itertor>
typename std::iterator_traits<Iterator>::value_type Tmp;
------解决方案--------------------
比如下面的这种情况
template<typename Iterator>
void swap(Iterator left, Iterator rigth)
{
}
不要说在调用另一个swap或者直接用变量类型,这只是举个例子
用模板元实现? 怎么写?
------解决方案--------------------
就是直接赋值
因为iterator应该已经重载了operator=
如果是自己定义的数据类型就要自己重载
------解决方案--------------------
template<typename T>
struct ITERATOR
{
typedef T TYPE;
};
template<typename T>
struct Vector
{
typedef ITERATOR<T> Iterator;
}
template<typename Iterator>
void swap(Iterator left, Iterator rigth)
{
Iterator::TYPE temp = *left;
*left = *right;
*right =tmp
}
Vector<int>::Iterator iter1, iter2;
swap(iter1, iter2);
------解决方案--------------------
#include <itertor>
typename std::iterator_traits<Iterator>::value_type Tmp;
------解决方案--------------------