64,646
社区成员
发帖
与我相关
我的任务
分享
template <class T>
typename std::set<P<T> >::iterator
getFirstIterator(std::set<P<T> > & s) // 返回第一个迭代码器,引用是防止拷贝
{
typename std::set<P<T> >::iterator i = s.begin();
return i;
//return s.begin(); // 或者直接用此句
//for(; i != s.end(); ++i) // 就返回一个,还要循环?
//{
// return *i;
//}
}
#include <iostream>
#include <set>
using namespace std;
template <typename T>
class P
{
public:
operator T() const
{
return mi;
}
void set(T t)
{
mi = t;
}
private:
T mi;
};
template <typename T>
void fun(set<P<T> > & s)
{
for (typename set<P<T> >::iterator it = s.begin(); it != s.end(); ++it)
cout << *it << "\t";
cout << endl;
}
int main()
{
set<P<int> > s;
P<int> p;
p.set(10);
s.insert(p);
fun(s);
return 0;
}
T& getFirstIterator(std::set<P<T> > s) //这个还是返回T&比较合理,毕竟你要改动指针实际指向的值或者使用它.
{
for(s::iterator i = s.begin(); i != s.end(); i++)
{
P<T> p=(*i); //智能指针对象
return *p; //实际对象
}
}