国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++】反向迭代器的模擬實現(xiàn)通用(可運用于vector,string,list等模擬容器)

這篇具有很好參考價值的文章主要介紹了【C++】反向迭代器的模擬實現(xiàn)通用(可運用于vector,string,list等模擬容器)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??博客主頁: 主頁
??系列專欄: C++
??感謝大家點贊??收藏?評論??
??期待與大家一起進步!



前言

我們要寫出一個通用的反向迭代器模擬而且在保證代碼簡介不繁瑣的的情況下,一定程度上使用我們自己模擬的已經(jīng)封裝好的iterator迭代器可以簡化許多步驟,首先我們要知道正向迭代器與反向迭代器在位置上的關系

【C++】反向迭代器的模擬實現(xiàn)通用(可運用于vector,string,list等模擬容器),c++,list,java
【C++】反向迭代器的模擬實現(xiàn)通用(可運用于vector,string,list等模擬容器),c++,list,java文章來源地址http://www.zghlxwxcb.cn/news/detail-619321.html

一、反向迭代器封裝(reverseiterator)

1.構造函數(shù)

Iterator _it;
		ReverseIterator(Iterator it)
		//iterator這里回頭傳的是正向迭代器
			:_it(it)
		{}

1解引用操作.

typedef ReverseIterator<Iterator, Ref, Ptr> self;
		Ref operator*() {
			Iterator tmp(_it);
			//因為從end()位置開始,所以要先--,
			//獲得新的位置,但不改變原來的_it
			//所以建立一個臨時對象對其進行--操作
			return *(--tmo);
		}

3.->運算符重載

Ptr operator->() {
			return &( operator*());
		}

4.前置++,后置++

self& operator++() {
			--_it;
			//舉例:從rbegin位置開始,也就是end()位置
			//因為此時的位置無效要前一個位置才有效,所以先前置--
			//反向迭代器的++就是正向迭代器的--
			return *this;
		}
		self operator++(int) {
			self tmp(*this);
			--_it;
			return tmp;
		}

5.前置–,后置–

self& operator--() {
			++_it;
			return *this;
		}
		self operator--(int) {
			self tmp(*this);
			++_it;
			return tmp;
		}

6.不等號運算符重載

bool operator!=(const self& s)const {
			return _it!= s._it;
		}

7.完整代碼

namespace simulation {
	template<class Iterator ,class Ref,class Ptr>
	//相當于:
	//typedef ReverseIterator<iterator, T&, T*> reverseiterator;
	//typedef ReverseIterator<const_iterator, const T&, const T*> const_reverseiterator;
	struct ReverseIterator {
		Iterator _it;
		ReverseIterator(Iterator it)
			:_it(it)
		{}
		typedef ReverseIterator<Iterator, Ref, Ptr> self;
		Ref operator*() {
			Iterator tmp(_it);
			//因為從end()位置開始,所以要先--,
			//獲得新的位置,但不改變原來的_it
			//所以建立一個臨時對象對其進行--操作
			return *(--tmo);
		}

		self& operator++() {
			--_it;
			//舉例:從rbegin位置開始,也就是end()位置
			//因為此時的位置無效要前一個位置才有效,所以先前置--
			//反向迭代器的++就是正向迭代器的--
			return *this;
		}
		self operator++(int) {
			self tmp(*this);
			--_it;
			return tmp;
		}

		self operator--(int) {
			self tmp(*this);
			++_it;
			return tmp;
		}
		self& operator--() {
			++_it;
			return *this;
		}
		Ptr operator->() {
			return &( operator*());
		}

		bool operator!=(const self& s)const {
			return _it!= s._it;
		}

	};
}

二、rbegin()以及rend()

//先在vctor或者list的頭文件中進行重定義
typedef ReverseIterator<iterator, T&, T*> reverseiterator;
typedef ReverseIterator<const_iterator, const T&, const T*> const_reverseiterator;

1.rbeign()

reverseiterator rbegin() {
			//反向迭代器的開頭對正向迭代器末尾進行操作
			return reverseiterator(end());
		}
		const_reverseiterator rbegin()const {
			return const_reverseiterator(end());
		}

2.rend()

reverseiterator rend() {
			return reverseiterator(begin());
		}
		const_reverseiterator rend()const {
			return const_reverseiterator(begin());
		}

到了這里,關于【C++】反向迭代器的模擬實現(xiàn)通用(可運用于vector,string,list等模擬容器)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【C++】反向迭代器的設計

    【C++】反向迭代器的設計

    + 前言 STL中不少的容器需要有迭代器這樣的設計, 特別是正向迭代器,幾乎每個容器都有自己的特定實現(xiàn)方式 ,有了正向迭代器之后,我們還要提供反向迭代器以供一些特殊的需求,但是許多容器的正向迭代器實現(xiàn)的方式不一樣,如果我們要實現(xiàn)其反向迭代器,每個容器的

    2024年02月02日
    瀏覽(27)
  • 【C++】STL反向迭代器模擬實現(xiàn),迭代器適配器,迭代器類型簡單介紹

    【C++】STL反向迭代器模擬實現(xiàn),迭代器適配器,迭代器類型簡單介紹

    本篇主要講反向迭代器的模擬實現(xiàn)。 能夠加深各位對泛型的理解。 前面我那篇string介紹里面已經(jīng)提到過反向迭代器是啥了,如果點進來的同學還不知道,可以看看:[string介紹](https://blog.csdn.net/m0_62782700/article/details/130796914? spm=1001.2014.3001.5501) 迭代器,可以在不暴露底層實現(xiàn)細

    2024年02月16日
    瀏覽(31)
  • c++--反向迭代器的實現(xiàn)

    c++--反向迭代器的實現(xiàn)

    1.反向迭代器 迭代器有兩種,一種是正向的,一種是反向的,方向迭代器的主要功能就是實現(xiàn)數(shù)據(jù)的反向訪問,通過正向迭代器的適配生成的,適配器就是一種設計模式(設計模式是一套被反復使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設計經(jīng)驗的總結),該種模式是將一

    2024年02月16日
    瀏覽(18)
  • 深入篇【C++】手搓模擬實現(xiàn)list類(詳細剖析底層實現(xiàn)原理)&&模擬實現(xiàn)正反向迭代器【容器適配器模式】

    深入篇【C++】手搓模擬實現(xiàn)list類(詳細剖析底層實現(xiàn)原理)&&模擬實現(xiàn)正反向迭代器【容器適配器模式】

    1.一個模板參數(shù) 在模擬實現(xiàn)list之前,我們要理解list中的迭代器是如何實現(xiàn)的。 在vector中迭代器可以看成一個指針,指向vector中的數(shù)據(jù)。它的解引用會訪問到具體的數(shù)據(jù)本身,++會移動到下一個數(shù)據(jù)位置上去,這些都是因為vector具有天生的優(yōu)勢:空間上是連續(xù)的數(shù)組,這樣指

    2024年02月15日
    瀏覽(34)
  • 【STL】模擬實現(xiàn)反向迭代器

    【STL】模擬實現(xiàn)反向迭代器

    目錄 1. 讀源碼 2. 搭建框架? 3. 迭代器的操作 operator*()? operator-() operator++() operator--() operator!=() 4. 實現(xiàn)?list 的反向迭代器 5. 實現(xiàn) vector 的反向迭代器 6. 源碼分享 寫在最后: 我們之前實現(xiàn)的 vector,list 好像都只實現(xiàn)了他們的正向迭代器,那有正向, 會有反向迭代器這種東西嗎

    2024年02月13日
    瀏覽(22)
  • STL之list模擬實現(xiàn)(反向迭代器講解以及迭代器失效)

    這次是關于list的模擬實現(xiàn)的代碼,先看看下面的代碼: 上面是list的代碼,其底層是一個帶頭雙向循環(huán)的鏈表,實現(xiàn)的方法就不說了,相信大家已經(jīng)都會了,然后自己實心的list我沒有寫析構函數(shù)等,這個也很簡單,循環(huán)利用成員函數(shù)中的刪除函數(shù)就可以。 先來說說個人認為

    2024年02月11日
    瀏覽(19)
  • 從C語言到C++_20(仿函數(shù)+優(yōu)先級隊列priority_queue的模擬實現(xiàn)+反向迭代器)

    從C語言到C++_20(仿函數(shù)+優(yōu)先級隊列priority_queue的模擬實現(xiàn)+反向迭代器)

    目錄 1.?priority_queue的模擬實現(xiàn) 1.1 未完全的priority_queue 1.2 迭代器區(qū)間構造和無參構造 1.3?仿函數(shù)的介紹和使用 1.4 完整priority_queue代碼: 1.5 相關筆試選擇題 答案: 2.?反向迭代器 2.1 反向迭代器的普通實現(xiàn) reverse_iterator.h(不對稱版) 2.2 反向迭代器的對稱實現(xiàn) reverse_iterator.

    2024年02月10日
    瀏覽(23)
  • 【c++迭代器模擬實現(xiàn)】

    【c++迭代器模擬實現(xiàn)】

    打怪升級:第52天 什么是STL STL(standard template libaray-標準模板庫):是C++標準庫的重要組成部分,不僅是一個可復用的組件庫,而且是一個包羅數(shù)據(jù)結構與算法的軟件框架。 STL的版本 原始版本 Alexander Stepanov、Meng Lee 在惠普實驗室完成的原始版本,本著開源精神,他們聲明允許

    2024年02月02日
    瀏覽(17)
  • C++ stl迭代器的理解

    首先,stl采用了泛型編程,分成了容器和算法,容器和算法之間的橋梁是迭代器,迭代器的作用是可以讓算法不區(qū)分容器來作用在數(shù)據(jù)上。 迭代器本質上是指針,原有類型(比如int,double等)的指針也可以是迭代器,那如何讓代碼區(qū)分開他們呢? 我們可以把自定義的迭代器包

    2024年02月15日
    瀏覽(19)
  • 【C++】vector模擬實現(xiàn)+迭代器失效

    【C++】vector模擬實現(xiàn)+迭代器失效

    鐵汁們,今天給大家分享一篇vector模擬實現(xiàn) + 迭代器失效,來吧,開造?? 指向最后一個空間的下一個位置 ?? iterator _endofstorage 指向存儲第一個有效數(shù)據(jù)空間的位置 ?? iterator _start 指向存儲最后一個有效數(shù)據(jù)空間的下一個位置 ?? iterator _finish 在成員變量聲明處給缺省值,

    2024年02月21日
    瀏覽(86)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包