56 cursor_ptr() : original_ptr(nullptr), current_ptr(nullptr) {}
71 : original_ptr(nullptr), current_ptr(cp.current_ptr) {}
78 : original_ptr(cp.original_ptr), current_ptr(cp.current_ptr)
80 cp.original_ptr =
nullptr;
88 T *
get() {
return current_ptr; }
89 operator T *() {
return current_ptr; }
96 const T &
operator[](
size_t i)
const {
return *(current_ptr + i); }
97 const T *
get()
const {
return current_ptr; }
98 operator const T *()
const {
return current_ptr; }
135 cp.current_ptr = current_ptr + sep;
141 cp.current_ptr = current_ptr - sep;
156 return current_ptr - cp.current_ptr;
164 return current_ptr == cp.current_ptr;
168 return current_ptr == p;
176 return current_ptr != cp.current_ptr;
180 return current_ptr != p;
197 if (original_ptr == p)
215 original_ptr =
nullptr;
216 current_ptr = cp.current_ptr;
230 current_ptr = cp.current_ptr;
231 original_ptr = cp.original_ptr;
232 cp.original_ptr =
nullptr;
243 T *p1 = current_ptr, *p2 = original_ptr;
244 current_ptr = cp.current_ptr;
245 original_ptr = cp.original_ptr;
247 cp.original_ptr = p2;
266 cursor_ptr() : original_ptr(nullptr), current_ptr(nullptr) {}
279 : original_ptr(nullptr), current_ptr(cp.current_ptr) {}
286 : original_ptr(cp.original_ptr), current_ptr(cp.current_ptr)
288 cp.original_ptr =
nullptr;
296 T *
get() {
return current_ptr; }
297 operator T *() {
return current_ptr; }
304 const T &
operator[](
size_t i)
const {
return *(current_ptr + i); }
305 const T *
get()
const {
return current_ptr; }
306 operator const T *()
const {
return current_ptr; }
343 cp.current_ptr = current_ptr + sep;
349 cp.current_ptr = current_ptr - sep;
364 return current_ptr - cp.current_ptr;
372 return current_ptr == cp.current_ptr;
376 return current_ptr == p;
384 return current_ptr != cp.current_ptr;
388 return current_ptr != p;
400 if (original_ptr == p)
402 delete[] original_ptr;
411 delete[] original_ptr;
412 original_ptr =
nullptr;
413 current_ptr = cp.current_ptr;
420 delete[] original_ptr;
421 current_ptr = cp.current_ptr;
422 original_ptr = cp.original_ptr;
423 cp.original_ptr =
nullptr;
434 T *p1 = current_ptr, *p2 = original_ptr;
435 current_ptr = cp.current_ptr;
436 original_ptr = cp.original_ptr;
438 cp.original_ptr = p2;
friend bool operator!=(const T *p, const cursor_ptr &cp)
Definition cursor_ptr.h:390
const T & operator*() const
Definition cursor_ptr.h:302
cursor_ptr()
默认构造。
Definition cursor_ptr.h:266
cursor_ptr(const cursor_ptr &cp)
拷贝构造,仅复制游标位置。
Definition cursor_ptr.h:278
cursor_ptr operator+(int sep) const
Definition cursor_ptr.h:340
cursor_ptr operator--(int)
Definition cursor_ptr.h:330
const cursor_ptr & operator=(T *p)
Definition cursor_ptr.h:398
T & operator*()
Definition cursor_ptr.h:293
cursor_ptr & operator++()
Definition cursor_ptr.h:314
T & operator[](size_t i)
Definition cursor_ptr.h:295
const T & operator[](size_t i) const
Definition cursor_ptr.h:304
bool operator==(const cursor_ptr &cp) const
Definition cursor_ptr.h:370
T * operator->()
Definition cursor_ptr.h:294
cursor_ptr(cursor_ptr &&cp)
移动构造,转移所有权。
Definition cursor_ptr.h:285
friend bool operator==(const T *p, const cursor_ptr &cp)
Definition cursor_ptr.h:378
const cursor_ptr & operator+=(int sep)
Definition cursor_ptr.h:352
bool operator==(const T *p) const
Definition cursor_ptr.h:374
bool operator!=(const cursor_ptr &cp) const
Definition cursor_ptr.h:382
cursor_ptr operator-(int sep) const
Definition cursor_ptr.h:346
cursor_ptr(T *p)
从原始数组指针构造,获取所有权。
Definition cursor_ptr.h:272
const cursor_ptr & operator=(cursor_ptr &&cp)
Definition cursor_ptr.h:416
void swap(cursor_ptr &cp)
交换两个 cursor_ptr 的内容。
Definition cursor_ptr.h:432
const cursor_ptr & operator=(const cursor_ptr &cp)
Definition cursor_ptr.h:407
T * get()
Definition cursor_ptr.h:296
const cursor_ptr & operator-=(int sep)
Definition cursor_ptr.h:357
cursor_ptr & operator--()
Definition cursor_ptr.h:325
const T * operator->() const
Definition cursor_ptr.h:303
cursor_ptr operator++(int)
Definition cursor_ptr.h:319
int operator-(const cursor_ptr &cp) const
Definition cursor_ptr.h:362
const T * get() const
Definition cursor_ptr.h:305
bool operator!=(const T *p) const
Definition cursor_ptr.h:386
~cursor_ptr()
析构,释放数组内存(使用 delete[])。
Definition cursor_ptr.h:310
int operator-(const cursor_ptr &cp) const
Definition cursor_ptr.h:154
friend bool operator!=(const T *p, const cursor_ptr &cp)
Definition cursor_ptr.h:182
const T & operator[](size_t i) const
Definition cursor_ptr.h:96
cursor_ptr operator++(int)
Definition cursor_ptr.h:111
bool operator==(const cursor_ptr &cp) const
Definition cursor_ptr.h:162
cursor_ptr & operator--()
Definition cursor_ptr.h:117
cursor_ptr(const cursor_ptr &cp)
拷贝构造,仅复制游标位置,不转移所有权。
Definition cursor_ptr.h:70
const T & operator*() const
Definition cursor_ptr.h:94
friend bool operator==(const T *p, const cursor_ptr &cp)
Definition cursor_ptr.h:170
cursor_ptr(T *p)
从原始指针构造,获取所有权。
Definition cursor_ptr.h:63
cursor_ptr()
默认构造,两个指针均为 nullptr。
Definition cursor_ptr.h:56
~cursor_ptr()
析构,释放 original_ptr 指向的内存(使用 delete)。
Definition cursor_ptr.h:102
const cursor_ptr & operator-=(int sep)
Definition cursor_ptr.h:149
cursor_ptr operator--(int)
Definition cursor_ptr.h:122
cursor_ptr operator+(int sep) const
Definition cursor_ptr.h:132
void swap(cursor_ptr &cp)
交换两个 cursor_ptr 的内容(包括所有者和游标)。
Definition cursor_ptr.h:241
const cursor_ptr & operator=(T *p)
从原始指针赋值,释放原有内存并接管新指针。
Definition cursor_ptr.h:195
T & operator*()
Definition cursor_ptr.h:85
cursor_ptr operator-(int sep) const
Definition cursor_ptr.h:138
T & operator[](size_t i)
Definition cursor_ptr.h:87
bool operator!=(const cursor_ptr &cp) const
Definition cursor_ptr.h:174
cursor_ptr(cursor_ptr &&cp)
移动构造,转移所有权。
Definition cursor_ptr.h:77
bool operator==(const T *p) const
Definition cursor_ptr.h:166
const cursor_ptr & operator=(cursor_ptr &&cp)
移动赋值,转移所有权。
Definition cursor_ptr.h:225
bool operator!=(const T *p) const
Definition cursor_ptr.h:178
const T * get() const
Definition cursor_ptr.h:97
const cursor_ptr & operator+=(int sep)
Definition cursor_ptr.h:144
cursor_ptr & operator++()
Definition cursor_ptr.h:106
const cursor_ptr & operator=(const cursor_ptr &cp)
拷贝赋值,仅复制游标位置,不转移所有权。
Definition cursor_ptr.h:210
const T * operator->() const
Definition cursor_ptr.h:95
T * operator->()
Definition cursor_ptr.h:86
T * get()
Definition cursor_ptr.h:88