#include <iostream>
#include <functional>
template <class T>
class Node
{
public:
T data;
Node<T> *next;
Node(T t)
{
data=t;
next=NULL;
}
};
class My_predicate
{
public:
bool operator()(int &a)
{
return a>2;
}
};
template <class T>class Forward_list
{
public:
class iterator
{
public:
iterator(Node<T>* p)
{
node=p;
}
T operator*()const
{
return node->data;
}
Node<T>* operator->()
{
return node;
}
//前置重载++,最好判断下,避免++A造成错误
iterator& operator++()
{
if(node!=NULL)
node=node->next;
return *this;
}
//后置重载++,不能返回局部变量引用
iterator operator++(int)
{
iterator ite = *this;
++(*this);
return ite;
}
bool operator!=(const iterator p)
{
return node!=p.node;
}
private:
Node<T> *node;
};
Forward_list();
iterator begin()
{
return iterator(head); //返回迭代器
}
iterator end()
{
return iterator(NULL); //返回迭代器尾,直接创建内容为空的迭代器
}
void push_front(Node<T>* node);//头插一个节点
void pop_front();//删去第一个节点
void insert_after(Node<T>* node);//尾插一个节点
void erase_after();//删去最后一个节点
int size();//返回节点个数
void clear();//清空链表
bool empty();//判断链表是否为空
void remove(const T& value);//删除t
template<class UnaryPredicate>
实现基于迭代器的链表(泛型)
最新推荐文章于 2022-12-24 00:07:46 发布
本文介绍了尝试使用C++实现基于迭代器的链表,并计划利用归并排序进行排序。然而,在实现sort函数的过程中遇到了困难,目前归并排序的merge函数尚未完成。作者打算在寻求专家指导后更新博客,分享解决方案。
摘要由CSDN通过智能技术生成