首页 > 其他分享 >迭代器模式

迭代器模式

时间:2023-12-08 16:23:20浏览次数:27  
标签:迭代 int 模式 priorityQueue myDeque myUnorderedMap include

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解迭代器模式的动机,掌握该模式的结构;
2、能够利用迭代器模式解决实际问题。

1. 搜集并掌握JAVA和C++中常见的数据结构和迭代器的使用方法,例如,vector, list, map和set等;


Java
PriorityQueue
java
import java.util.PriorityQueue;

// 创建PriorityQueue
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();

// 添加元素
priorityQueue.offer(3);
priorityQueue.offer(1);
priorityQueue.offer(2);

// 获取并移除最小元素
int minElement = priorityQueue.poll();

// 遍历(不按顺序)
while (!priorityQueue.isEmpty()) {
    int element = priorityQueue.poll();
    // 进行操作
}
TreeMap
java
import java.util.TreeMap;
import java.util.Map;

// 创建TreeMap
TreeMap<String, Integer> treeMap = new TreeMap<>();

// 添加键值对
treeMap.put("Apple", 10);
treeMap.put("Orange", 5);
treeMap.put("Banana", 8);

// 获取键值对集合
for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {
    String key = entry.getKey();
    int value = entry.getValue();
    // 进行操作
}

C++

Deque
cpp
#include <deque>

// 创建deque
std::deque<int> myDeque;

// 在开头和末尾添加元素
myDeque.push_front(1);
myDeque.push_back(2);

// 访问首尾元素
int frontElement = myDeque.front();
int backElement = myDeque.back();

// 迭代器遍历
for (std::deque<int>::iterator it = myDeque.begin(); it != myDeque.end(); ++it) {
    int value = *it;
    // 进行操作
}

// range-based for循环
for (int num : myDeque) {
    // 进行操作
}
UnorderedMap
cpp
#include <unordered_map>

// 创建unordered_map
std::unordered_map<std::string, int> myUnorderedMap;

// 添加键值对
myUnorderedMap["One"] = 1;
myUnorderedMap["Two"] = 2;
myUnorderedMap["Three"] = 3;

// 迭代器遍历
for (auto it = myUnorderedMap.begin(); it != myUnorderedMap.end(); ++it) {
    std::string key = it->first;
    int value = it->second;
    // 进行操作
}

// range-based for循环
for (const auto& entry : myUnorderedMap) {
    std::string key = entry.first;
    int value = entry.second;
    // 进行操作
}

2. 提交源代码;

#include <string>
#include <vector>
#include <iostream>
#include <fstream>
using namespace std;
struct student
{
    string id;
    string name;
};
void LoadStudent(vector<student>&);
int main()
{
    vector<student> v,v1;
    LoadStudent(v);
    LoadStudent(v1);
    cout<<"学号从小到大:"<<endl;
    for (vector<student>::iterator iter = v.begin(); iter != v.end(); ++iter)
    {
        cout << "学号:" << iter->id << "  姓名:" << iter->name << endl;
    }
    cout<<"***********************"<<endl;
    cout<<"学号从大到小:"<<endl;
    for (vector<student>::reverse_iterator iter1 = v.rbegin(); iter1 != v.rend(); ++iter1)
    {
        cout << "学号:" << iter1->id << "  姓名:" << iter1->name << endl;
    }
    return 0;
}
void LoadStudent(vector<student>& v)
{
    ifstream infile;
    infile.open("E:\\student.txt");
    student s;
    if(!infile)     //判断是否存在ifstream infile 
    { 
        cout<<"读入文件不存在"<<endl; 
    } 
    if (infile.is_open())   //判断文件流是否处于打开状态 
    { 
        while (infile.good()&&!infile.eof()) 
        { 
            infile>>s.id>>s.name; 
            v.push_back(s);    //将数据读入到data_vector 
        } 
    } 
    infile.close(); 
}

3. 注意编程规范。

标签:迭代,int,模式,priorityQueue,myDeque,myUnorderedMap,include
From: https://www.cnblogs.com/yzx-sir/p/17888378.html

相关文章

  • 中介者模式
    [实验任务一]:虚拟聊天室在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:新的具体聊天室中发送的图片大小不得超过20M。新的具体聊天室中发送的文字长度不得超过100个字符。新的具体会员类可以发送图片信息和文本信息。新的具体会员类在发送文......
  • 小谈设计模式(14)—建造者模式
    (小谈设计模式(14)—建造者模式)专栏介绍专栏地址link专栏介绍主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步,加油,各位。建造者模式建造者模式是一种创建型设计模式,它可以将一个复杂......
  • Pipeline模式应用
    本文记录Pipeline设计模式在业务流程编排中的应用前言Pipeline模式意为管道模式,又称为流水线模式。旨在通过预先设定好的一系列阶段来处理输入的数据,每个阶段的输出即是下一阶段的输入。本案例通过定义PipelineProduct(管道产品),PipelineJob(管道任务),PipelineNode(管道节点),完成一整......
  • GOF23--23种设计模式(二)
    一.建造者模式建造者模式也是属于建造型模式,它提供了一种创建对象的最佳方式定义:将一个复杂的对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示主要作用:在用户不知道对象的构建细节的情况下,就可以创建复杂的对象这里需要注意一下,建造者模式都都是用来创建复杂对......
  • python的异步迭代器含义
    python的异步迭代器什么意思?什么是迭代器:迭代器是一种遵循迭代器协议的对象,可以被用在像for循环这样的迭代环境中。迭代器协议包含两个方法:__iter__():返回迭代器自身。__next__():返回迭代器的下一个元素。如果没有更多元素,则抛出StopIteration异常。就是这两个方法要包......
  • 23种设计模式——建造者模式
    今天我们要学习的是23种设计模式中的第四种——建造者模式。建造者模式主要适用于一些基本部件不会变,而其组合经常变化的情况,下面我们开始进入正题。概念:建造者模式(BuilderPattern)又叫生成器模式,是一种对象构建模式。建造者模式是将一个复杂对象的构造与它的表示分离,使同样的......
  • 【Nginx/IIS】解决uniapp/Vue history模式下页面刷新404
    uniapp/Vue开启History模式本地开发:二级页面刷新或者通过链接进入二级页面是正常的打包部署后:二级页面刷新或者通过链接进入二级页面会报错404页面找不到 解决方案:Nginx配置:在nginx.conf的对应location里配置一行代码try_files$uri$uri//index.html;location/h5{......
  • uml设计模式语言
    UML(UnifiedModelingLanguage)是一种广泛应用于软件开发和系统设计的建模语言。在软件工程中,UML图用于可视化、规划和共享系统设计的概念,其中类图是其中最核心、最常用的一种图示。本文将简述UML模型设计的基本概念,重点关注类图及其关系的详细解释。1.UML概述:UML作为一种标准化......
  • Windows 下部署Redis 主从模式+哨兵模式+JAVA连接方式
    原文:Windows下部署Redis主从模式+哨兵模式+JAVA连接方式_javaredis部署-CSDN博客前言之前项目需求部署redis高可用,走了很多弯路以及相关配置来回折腾浪费了很多时间,特地记录下。主从模式:实现多台redis实例进行服务运行,并且数据相互同步;哨兵模式:实现主服务器和从服务器进行监......
  • vim编辑器命令模式——撤销与时间旅行
    原创:厦门微思网络Vi介绍Vi编辑器是所有Unix及Linux系统下标准的编辑器,类似于windows系统下的notepad(记事本)编辑器,由于在Unix及Linux系统的任何版本,Vi编辑器是完全相同的,因此可以在其他任何介绍vi的地方都能进一步了解它,Vi也是Linux中最基本的文本编辑器,学会它后......