中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

聊城網站建設上饒seo博客

聊城網站建設,上饒seo博客,dw網頁制作考試題目,工商名稱預先核準官網1、迭代器模式的提出 在軟件開發(fā)過程中,操作的集合對象內部結構常常變化,在訪問這些對象元素的同時,也要保證對象內部的封裝性。迭代器模式提供了一種利用面向對象的遍歷方法來遍歷對象元素。迭代器模式通過抽象一個迭代器類,不同…

1、迭代器模式的提出

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

2、需求描述

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

3、功能實現(xiàn)

(1)UML圖如下:

?

(2)代碼實現(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;
}

程序運行結果如下:

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

4、面向對象實現(xiàn)迭代器分析

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

5、泛型編程實現(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;
}

程序運行結果如下:

http://www.risenshineclean.com/news/32164.html

相關文章:

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