当前位置:网站首页>The use of list and Its Simulation Implementation
The use of list and Its Simulation Implementation
2022-07-07 11:06:00 【Exy-】
One .list iterator Use
int ar[] = { 1,2,3,4,5,6,7,8,9,0 };
int n = sizeof(ar) / sizeof(ar[0]);
//list<int> mylist(10,5);// Two way circular list with leading node
list<int> mylist(ar, ar + n);
for (const auto& e : mylist)
{
cout << e << " ";
}
cout << endl;
list<int>::iterator it = mylist.begin();
while (it != mylist.end())
{
cout << *it << " ";
++it;
}
cout << endl;
list<int>::reverse_iterator rit = mylist.rbegin();
while (rit != mylist.rend())
{
cout << *rit << " ";
++rit;
}
cout << endl;
3.list Iterator failure problem for
Two .list Built in functions for
list<int> mylist;
mylist.empty testing list Is it empty , Is to return true, Otherwise return to false
mylist.size return list Number of valid nodes in
mylist.front return list The reference to the value in the first node of
mylist.back return list Reference to the value of the last node of
3、 ... and .list Simulation Implementation
namespace ljx
{
template<class T>
struct __list_node
{
__list_node<T>* _next;
__list_node<T>* _prev;
T _data;
__list_node(const T& x=T())
:_data(x)
,_next(nullptr)
,_prev(nullptr)
{}
};
template<class T,class Ref,class Ptr>
struct __list_iterator
{
typedef __list_node<T>node;
typedef __list_iterator<T, Ref, Ptr>Self;
node* _node;
__list_iterator(node* node)
:_node(node)
{}
T* operator->()
{
return &_node->_data;
}
T& operator*()
{
return _node->_data;
}
Self& operator++()
{
_node = _node->_next;
return *this;
}
Self& operator++(int)
{
Self tmp(*this);
//_node = _node->_next;
++(*this);
return tmp;
}
Self& operator--()
{
_node = _node->_prev;
return *this;
}
Self& operator--(int)
{
__list_iterator<T>tmp(*this);
--(*this);
return tmp;
}
bool operator!=(const Self& it)
{
return _node != it._node;
}
bool operator==(const Self& it)
{
return _node == it._node;
}
};
template<class T>
class list
{
typedef __list_node<T> node;
public:
typedef __list_iterator<T, T&, T*>iterator;
typedef __list_iterator<T,const T&,const T*> const_iterator;
// Take the lead in two-way circular list
//typedef __list_iterator<T,const T&,const T * > const_iterator;
iterator begin()
{
return iterator(_head->_next);
}
const_iterator begin()const
{
return const_iterator(_head->_next);
}
iterator end()
{
return iterator(_head);
}
const_iterator end()const
{
return const_iterator(_head);
}
list()
{
_head = new node;
_head->_next = _head;
_head->_prev = _head;
}
list(const list<T>& lt)
{
_head = new node;
_head->_next = _head;
_head->_prev = _head;
//const_iterator it = lt.begin();
//while (it != lt.end())
//{
// push_back(*it);
// ++it;
//}
for (auto e : lt)
{
push_back(e);
}
}
//list <T>& operator=(const list<T>& lt)
//{
// if (this != <)
// {
// clear();
// for (auto e : lt)
// {
// push_back(e);
// }
// }
// return *this;
//}
list<T>& operator=(list<T> lt)
{
swap(_head, lt._head)
return *this;
}
~list()
{
clear();
delete _head;
_head = nullptr;
}
void clear()
{
node* p = _head->_next;
while (p != _head)
{
delete(p);
}
}
void push_back(const T& x)
{
//node* tail = _head->_prev;
//node* newnode = new node(x);
//tail->_next = newnode;
//newnode->_prev = tail;
//newnode->_next = _head;
//_head->_prev = newnode;
insert(end(), x);
}
void push_front(const T& x);
void insert(iterator pos, const T& x)
{
node* cur = pos._node;
node* prev = cur->_prev;
node* newnode = new node(x);
prev->_next = newnode;
newnode->_prev = prev;
newnode->_next = cur;
cur->_prev = newnode;
}
void erase(iterator pos)
{
assert(pos != end());
{
node* cur = pos._node;
node* prev = cur->_prev;
node* next = cur->_next;
delete cur;
prev->_next = next;
next->_prev = prev;
}
}
void pop_back()
{
erase(iterator(_head->_prev));
erase(--end());
}
private:
node* _head;
};
}
边栏推荐
- Basic introduction of yarn and job submission process
- P1031 [noip2002 improvement group] average Solitaire
- 【推荐系统 02】DeepFM、YoutubeDNN、DSSM、MMOE
- 软考一般什么时候出成绩呢?在线蹬?
- uniCloud
- Unable to open kernel device '\.\vmcidev\vmx': operation completed successfully. Reboot after installing vmware workstation? Module "devicepoweron" failed to start. Failed to start the virtual machine
- 2021-04-23
- 【PyTorch 07】 动手学深度学习——chapter_preliminaries/ndarray 习题动手版
- 书签整理-程序员常用网站导航
- Use load_ decathlon_ Datalist (Monai) fast loading JSON data
猜你喜欢
Ping tool ICMP message learning
SQL Server knowledge gathering 9: modifying data
[installation system] U disk installation system tutorial, using UltraISO to make U disk startup disk
[pro test feasible] error while loading shared libraries solution
单调性约束与反单调性约束的区别 monotonicity and anti-monotonicity constraint
高级软考(网络规划设计师)该如何备考?
Online hard core tools
[untitled]
【亲测可行】error while loading shared libraries的解决方案
在线硬核工具
随机推荐
SQL Server knowledge gathering 9: modifying data
Cluster task scheduling system lsf/sge/slurm/pbs based on HPC scenario
Still cannot find RPC dispatcher table failed to connect in virtual KD
uniapp 在onLaunch中跳转页面后,点击事件失效解决方法
What does intermediate software evaluator test
Shardingsphere sub database and table examples (logical table, real table, binding table, broadcast table, single table)
Arduino board description
Using tansformer to segment three-dimensional abdominal multiple organs -- actual battle of unetr
Cmake learning manual
2022.7.6DAY598
请问申购新股哪个证券公司开户是最好最安全的
The fifth training assignment
The difference between monotonicity constraint and anti monotonicity constraint
Find the greatest common divisor and the least common multiple (C language)
Use of dotween
Applet jump to H5, configure business domain name experience tutorial
[untitled]
单调性约束与反单调性约束的区别 monotonicity and anti-monotonicity constraint
Rolling puddle Uni_ App (VIII)
Typescript interface inheritance