国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

聊城網(wǎng)站建設(shè)上饒seo博客

聊城網(wǎng)站建設(shè),上饒seo博客,dw網(wǎng)頁制作考試題目,工商名稱預(yù)先核準(zhǔn)官網(wǎng)1、迭代器模式的提出 在軟件開發(fā)過程中,操作的集合對象內(nèi)部結(jié)構(gòu)常常變化,在訪問這些對象元素的同時(shí),也要保證對象內(nèi)部的封裝性。迭代器模式提供了一種利用面向?qū)ο蟮谋闅v方法來遍歷對象元素。迭代器模式通過抽象一個(gè)迭代器類,不同…

1、迭代器模式的提出

在軟件開發(fā)過程中,操作的集合對象內(nèi)部結(jié)構(gòu)常常變化,在訪問這些對象元素的同時(shí),也要保證對象內(nèi)部的封裝性。迭代器模式提供了一種利用面向?qū)ο蟮谋闅v方法來遍歷對象元素。迭代器模式通過抽象一個(gè)迭代器類,不同的對象繼承自迭代器類,外部通過統(tǒng)一接口訪問元素。

2、需求描述

設(shè)計(jì)一個(gè)能添加數(shù)據(jù)元素的容器類,并且能夠遍歷容器數(shù)據(jù)元素。

3、功能實(shí)現(xiàn)

(1)UML圖如下:

?

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

#include <iostream>
#include <vector>// 抽象迭代器接口
template<typename T>
class Iterator {
public:virtual T& operator*() = 0;virtual Iterator<T>& operator++() = 0;virtual bool operator!=(const Iterator<T>& other) const = 0;virtual ~Iterator(){};
};// 具體迭代器類
template<typename T>
class ConcreteIterator : public Iterator<T> {
public:ConcreteIterator(T* ptr) : m_ptr(ptr) {}T& operator*() override {return *m_ptr;}Iterator<T>& operator++() override {++m_ptr;return *this;}bool operator!=(const Iterator<T>& other) const override {const ConcreteIterator* concreteOther = dynamic_cast<const ConcreteIterator*>(&other);return m_ptr != concreteOther->m_ptr;}private:T* m_ptr;
};// 具體容器類
template<typename T>
class Container {
public:void add(const T& element) {m_elements.push_back(element);}Iterator<T>* begin() {return  new ConcreteIterator<T>(&m_elements[0]);}Iterator<T>* end() {return new ConcreteIterator<T>(&m_elements[m_elements.size()]);}
private:std::vector<T> m_elements;
};class Client
{
public:void doWork(){Container<float> container;container.add(1.0);container.add(2.0);container.add(3.2);Iterator<float>* itBegin = container.begin();Iterator<float>* itEnd = container.end();while (*itBegin != *itEnd) {std::cout << **itBegin << "\n";++(*itBegin);}delete itBegin;delete itEnd;itBegin = nullptr;itEnd = nullptr;}
};int main() {Client obj;obj.doWork();return 0;
}

程序運(yùn)行結(jié)果如下:

?根據(jù)容器下標(biāo)實(shí)現(xiàn)的迭代器模式方法也可參考:設(shè)計(jì)模式-迭代器模式 C++實(shí)現(xiàn)_c++ 迭代器模式_MachineChen的博客-CSDN博客

4、面向?qū)ο髮?shí)現(xiàn)迭代器分析

面向?qū)ο髮?shí)現(xiàn)的迭代器模式是在程序運(yùn)行時(shí),通過虛函數(shù)去操作對象元素;相比于C++中的泛型編程實(shí)現(xiàn)迭代器的運(yùn)行性能較低(泛型編程是在編譯時(shí)已確定訪問的元素),所以建議使用泛型編程實(shí)現(xiàn)迭代器。

5、泛型編程實(shí)現(xiàn)迭代器

#include <iostream>
#include <vector>template<typename T>
class Iterator {
public:Iterator(T* ptr) : m_ptr(ptr) {}// 解引用操作符T& operator*() {return *m_ptr;}// 前綴自增操作符Iterator& operator++() {++m_ptr;return *this;}// 后綴自增操作符Iterator operator++(int) {Iterator iterator = *this;++m_ptr;return iterator;}// 比較操作符bool operator!=(const Iterator& other) const {return m_ptr != other.m_ptr;}private:T* m_ptr;
};template<typename T>
class Container {
public:void add(const T& element) {m_elements.push_back(element);}Iterator<T> begin() {return Iterator<T>(&m_elements[0]);}Iterator<T> end() {return Iterator<T>(&m_elements[m_elements.size()]);}private:std::vector<T> m_elements;
};class Client
{
public:void doWork(){Container<float> container;container.add(1.0);container.add(2.0);container.add(3.2);for (Iterator<float> it = container.begin(); it != container.end(); ++it) {std::cout << *it << "\n";}}
};int main() {Client obj;obj.doWork();return 0;
}

程序運(yùn)行結(jié)果如下:

http://m.aloenet.com.cn/news/32164.html

相關(guān)文章:

  • 廣安市國土資源局網(wǎng)站建設(shè)推廣通
  • ps做網(wǎng)站主頁圖片怎樣在百度上免費(fèi)做廣告
  • 購物網(wǎng)站設(shè)計(jì)目的小吳seo博客
  • ssp網(wǎng)站怎么做最快新聞資訊在哪看
  • 云南房產(chǎn)網(wǎng)站建設(shè)seo基礎(chǔ)入門教程
  • jsp寫的網(wǎng)站營銷型網(wǎng)站建設(shè)運(yùn)營
  • 北京多用戶商城網(wǎng)站建設(shè)百度 seo 工具
  • 做網(wǎng)站常用到的css標(biāo)簽最新疫情最新情況
  • 昆明網(wǎng)站建設(shè)貓咪網(wǎng)絡(luò)營銷技巧培訓(xùn)
  • 加強(qiáng)信息網(wǎng)站建設(shè)希愛力
  • 級a做爰片免費(fèi)視網(wǎng)站看看谷歌seo培訓(xùn)
  • 網(wǎng)站開發(fā)有那些費(fèi)用推廣互聯(lián)網(wǎng)推廣
  • 廣平網(wǎng)站建設(shè)seo顧問服務(wù)公司站長
  • wordpress模板導(dǎo)出重慶seo哪個(gè)強(qiáng)
  • 昆明網(wǎng)站建設(shè)搜q.479185700百度關(guān)鍵詞推廣公司哪家好
  • 公司網(wǎng)站建設(shè)的通知酒店網(wǎng)絡(luò)營銷推廣方式
  • 攝影網(wǎng)站開發(fā)背景怎么寫云搜索
  • 洛陽網(wǎng)站建設(shè)設(shè)計(jì)公司百度貼吧熱線客服24小時(shí)
  • jsp網(wǎng)站安全性電商運(yùn)營培訓(xùn)大概多少學(xué)費(fèi)
  • 中企動力科技股份有限公司是做什么的優(yōu)化手機(jī)性能的軟件
  • 做網(wǎng)站賣草坪賺錢嗎精準(zhǔn)營銷推廣方案
  • 網(wǎng)站備案有效期免費(fèi)下載優(yōu)化大師
  • 做網(wǎng)站600網(wǎng)絡(luò)營銷模式有哪些
  • 網(wǎng)站制作的一般步驟是什么百度百科搜索入口
  • 利用別人域名做自己的網(wǎng)站可以免費(fèi)推廣的平臺
  • 公司網(wǎng)站設(shè)計(jì)怎么做b站視頻推廣怎么買
  • 上海做網(wǎng)站比較有名的公司百度q3財(cái)報(bào)減虧170億
  • 如何在分類信息網(wǎng)站做推廣軟文推廣代寫代發(fā)
  • 網(wǎng)站策劃過程怎樣推廣品牌
  • 湛江制作企業(yè)網(wǎng)站站長工具使用