国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C/C++ - C++ 模擬實(shí)現(xiàn)list(迭代器)實(shí)現(xiàn)代碼

C++ 模擬實(shí)現(xiàn)list(迭代器)實(shí)現(xiàn)代碼

2021-05-12 16:18wangpengcsdn1 C/C++

這篇文章主要介紹了C++ 模擬實(shí)現(xiàn)list(迭代器)實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下

C++ 模擬實(shí)現(xiàn)list(迭代器)

實(shí)現(xiàn)代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
#pragma once;
#include <assert.h>
#include<iostream>
#include <assert.h>
using namespace std;
template<class T>
struct __ListNode
{
   T _data;
   __ListNode<T>* _next;
   __ListNode<T>* _prev;
   __ListNode(const T& x)
     :_data(x)
     ,_next(NULL)
     ,_prev(NULL)
   {
   }
};
template <class T,class Ref,class Ptr >
struct __ListIterator
{
  typedef __ListNode<T>  Node;
  typedef __ListIterator<T,Ref,Ptr> Self;
__ListIterator(Node* node)  
    :_node(node)
  {
  }
  Ref operator*()
  {
    return _node->_data;
  }
  Ptr operator->()
  {
    return &(_node->_data)
  }
  Self& operator++()
  {
    _node=_node->_next;
    return *this;
  }
  Self& operator--()
  {
    _node=_node->_prev;
    return *this;
  }
  Self operator++(int)
  {
    Self tmp=_node;
    _node=_node->_next;
    //return tmp;
    return Self(tmp)  
  }
  Self operator--(int)
  {  
    Self tmp=(*this);
    _node=_node->_prev;
    return tmp;
  }
  bool operator!=(const Self& s) const
  {
   return this->_node!=s._node;
  }
  bool operator==(const Self& s) const
  {
    return this->_node==s._node;
  }
  Node* _node;
};
template<class T>
struct List
{
  typedef __ListNode<T> Node;
public:
  typedef __ListIterator<T,T&,T*> Iterator;
  typedef __ListIterator<T,const T&,const T*> ConstIterator;
  Node* GetNode(const T& x)
  {
    return new Node(x);
  }
  List()
  {
    _head=GetNode(T());
    _head->_next=_head;
    _head->_prev=_head;
  }
  Iterator Begin()
  {
   return Iterator(_head->_next);
  }
  Iterator End()
  {
   return Iterator(_head);
  }
  ConstIterator Begin() const
  {
    return ConstIterator(_head->_next);
  }
  ConstIterator End() const
  {
    return ConstIterator(_head);
  }
    
  void PushBack(const T& x)
  {
   /* Node* _tail=_head->_prev;
    Node* tmp=GetNode(x);
    _tail->_next=tmp;
    tmp->_prev=_tail;
    tmp->_next=_head;
    _head->_prev=tmp;*/
    Insert(End(),x);
  }
 void PopBack()
 {
   /* assert(_head->_prev );
   Node* tail=_head->_prev;
   Node* prev=tail->_prev;
   Node* next=tail->_next;
   prev->_next=next;
   next->_prev=prev;
   delete tail;*/
   Erase(--End());
 }
 void PushFront(const T& x)
 {
  /*assert(_head)
   Node* tmp=GetNode(x);
   Node* next=_head->_next;
 
   _head->_next=tmp;
   tmp->_prev=_head;
 
   tmp->_next=next;
    next->_prev=tmp;*/
   Insert(Begin(),x);
 }
 void PopFront()
 {
   /*assert(_head->_next);
   Node* tmp=_head->_next;
   Node* next=tmp->_next;
 
   _head->_next= next;
   next->_prev=_head;
   delete tmp;*/
 
    Erase(Begin());
 }
 Iterator Insert(Iterator pos, const T& x)
 {
   assert(pos._node);
   Node* tmp=GetNode(x);
   Node* cur=pos._node;
   Node* prev=cur->_prev;
     
   prev->_next=tmp;
   tmp->_prev=prev;
   tmp->_next=cur;
   cur->_prev=tmp;
   return tmp;
 }
 Iterator Erase(Iterator pos)
{
assert(pos._node && pos._node!=NULL);
Node* tmp=pos._node;
Node* next=tmp->_next;
Node* prev=tmp->_prev;
  
next->_prev=prev;
prev->_next=next;
 
delete tmp;
return Iterator(next);
}
  
protected:
  Node* _head;
};
void PrintList(const List<int>& l)
{
  List<int>::ConstIterator It=l.Begin();
  while(It!=l.End())
  
    cout<<*It<<" ";
    ++It;
  }
  cout<<endl;}
 void TestList2()
{
  List<int> l2;
   
  l2.PushBack(1); 
  l2.PushBack(2);
  l2.PushBack(3);
  l2.PushBack(4);
  l2.PopBack(); 
  l2.PopBack(); 
   l2.PopBack(); 
   l2.PopBack(); 
    l2.PopBack(); 
  PrintList(l2);
}
void TestList3()
{
  List<int> l3;
  l3.PushFront(1);
  l3.PushFront(2);
  l3.PushFront(3);
  l3.PushFront(4);
  l3.PopFront();
  l3.PopFront();
  l3.PopFront();
  PrintList(l3);
  
}
?
1
2
3
4
5
6
7
8
9
#include "List.h"
 
int main()
{
  //TestList1();
   //TestList2();
   TestList3(); 
  return 0;
}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/wangpengcsdn1/article/details/70490639

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本福利视频网 | 在线日韩一区 | 91精品国产人妻国产毛片在线 | 午夜视频在线观看视频 | 国产人成精品一区二区三 | 色135综合网 | 精久久 | 久久网一区二区三区 | 日韩激情一区二区三区 | 91精品久久久久久久久久 | 91国视频 | 日韩精品一区二区在线 | 一区二区三区中文字幕 | 亚洲精选久久 | 综合伊人久久 | 精品欧美乱码久久久久久 | 国产成人精品电影 | 视频在线一区二区 | 国产精品视频一二三区 | 久久久久中文字幕 | 久久精品二 | 日本三级电影网站 | 久久亚| 日韩高清中文字幕 | 色嫩紧中文字幕在线 | 91久久精品一区二区二区 | 国产精品五区 | 国产精品久久久久久亚洲调教 | 黑人巨大精品欧美一区免费视频 | 日韩欧美亚洲 | 欧美成视频 | 欧美成人综合在线 | 国产日韩视频 | 欧美在线观看一区二区 | 亚洲久草 | 毛片在线视频 | 亚洲精品专区 | 国产精品久久久久久久久免费高清 | 国产福利电影在线观看 | 四虎网址 | 国产精品美女久久久久久久网站 |