首页 > 其他分享 >软件设计-迭代器模式

软件设计-迭代器模式

时间:2022-11-04 15:55:05浏览次数:42  
标签:name 迭代 软件设计 age 模式 vec Student sid new

JAVA和C++常见数据结构迭代器的使用
信1305班共44名同学,每名同学都有姓名,学号和年龄等属性,分别使用JAVA内置迭代器和C++中标准模板库(STL)实现对同学信息的遍历,要求按照学号从小到大和从大到小两种次序输出学生信息。

 

源码

Java内置迭代器

   
package rjsj.no18;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

class Student implements Comparable<Student>{

    private String name;
    private int sid;
    private int age;

    public Student(String name, int sid, int age) {
        this.name = name;
        this.sid = sid;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "姓名='" + name + '\'' +
                ", 学号=" + sid +
                ", 年龄=" + age +
                '}';
    }

    @Override
    public int compareTo(Student o) {
        if (this.sid > o.sid){
            return -1;
        } else if (this.sid < o.sid){
            return 1;
        } else {
            return 0;
        }
    }
}
class IteratorDemo {
    public static void main(String[] args) {
        Student student1 = new Student("张三",20193885,21);
        Student student2 = new Student("李四",20201456,20);
        Student student3 = new Student("王五",20184655,23);
        Student student4 = new Student("赵六",20191242,22);
        Student student5 = new Student("李七",20213256,19);
        List<Student> list = new ArrayList<Student>();
        list.add(student1);list.add(student2);list.add(student3);
        list.add(student4);list.add(student5);
        Collections.sort(list);
        System.out.println("按学号排序输出:");
        Iterator i = list.iterator();
        while (i.hasNext()){
            System.out.println(i.next().toString());
        }
    }
}
 

 

C++

   
#include<iostream>
#include <vector>
#include<algorithm>
using namespace std;
class Student{
public:
     long studentid;
     string name;
     int age;
     string major;
public:
     Student(long studentid, string name, int age, string major) {
        this->studentid = studentid;
        this->name = name;
        this->age = age;
        this->major = major;
    }
    void show(){
        cout<<"姓名: "<<this->name<<"\t学号: "<<this->studentid <<"\t年龄: "<< this->age<< "\t专业: " << this->major<<endl;
    }
};
bool compMax(Student *a,Student *b){
    if (a->studentid> b->studentid)
         return true;
     else
         return false;
}
bool compMin(Student *a,Student *b){
    if (a->studentid< b->studentid)
         return true;
     else
         return false;
}
int main(){
    Student *s1 = new Student(20193288, "张三", 19, "土木");
    Student *s2 = new Student(20193999, "李四", 21, "经管");
    Student *s3 = new Student(20196654, "王五", 22, "软工");
    Student *s4 = new Student(20193367, "赵六", 20, "机械");
    vector<Student*> vec;
    vec.push_back(s1);
    vec.push_back(s2);
    vec.push_back(s3);
    vec.push_back(s4);
    cout<<"按照学号从大到小输出: "<<endl;
    vector<Student*>::iterator it;
    sort(vec.begin(), vec.end(),compMax);
    for(it=vec.begin();it!=vec.end();it++){
        (*it)->show();
    }
    cout<<"-----------------------------------------------------------------"<<endl;
    cout<<"按照学号从小到大输出: "<<endl;
    sort(vec.begin(), vec.end(),compMin);
    for(it=vec.begin();it!=vec.end();it++){
        (*it)->show();
    }
}
 

 

运行结果

标签:name,迭代,软件设计,age,模式,vec,Student,sid,new
From: https://www.cnblogs.com/wlqyyds/p/16858105.html

相关文章

  • 行为型设计模式之访问者模式
    访问者模式访问者模式属于行为型模式。它是一种将数据结构与数据操作分离的设计模式。是指封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定......
  • 广州华锐互动:虚拟现实技术打造安全事故模拟体验新模式
    随着我国的不断发展和文明程度的不断提高,安全问题越来越受到重视。对于安全事故的预防处理,作业人员每年都需要进行至少一次的安全教育培训和考核,但是很多事故无法亲身经历,......
  • 观察者模式
    观察者模式对象间存在一对多关系时,使用观察者模式.当一个对象被修改时,会自动通知依赖它的对象,观察者模式属于行为模式如何解决抽象类里有一个ArrayList存放观察者们......
  • 图扑软件智慧云展厅,开启数字化展馆新模式
    前言随着疫情的影响以及新兴技术的不断发展,展会的发展形式也逐渐从线下转向线上。通过“云”上启动、云端互动、双线共频的形式开展。通过应用大数据、人工智能、沉浸式交......
  • 线程安全的单例模式
    懒汉式加方法锁publicclassSingleton{privatestaticSingletonsingleton=null;privateSingleton(){}publicstaticsynchronizedSingletongetIn......
  • SpringCloud(六) - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)
    1、安装erlang语言环境1.1创建erlang安装目录mkdirerlang1.2上传解压压缩包上传到:/root/解压缩#tar-zxvfotp_src_22.0.tar.gz1.3进入解压缩目录,指定......
  • BIOS三种硬盘模式
    文章目录​​IDE模式​​​​RAID模式​​​​AHCI模式​​IDE模式IDE表示硬盘的传输接口,我们常说的IDE接口,也叫ATA(AdvancedTechnologyAttachment)接口,现在PC机使用的硬盘......
  • 迭代器失效的几种情况
    关于迭代器失效,,今天做一个总结。迭代器失效分三种情况考虑,也是三种数据结构考虑,分别为数组型,链表型,树型数据结构。1、对于序列式容器,比如vector,删除当前的iterator会使后面......
  • python-迭代器与生成器
    迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter()和next()。字符串,列表或元组对象都可用于创建......
  • TDengine:无模式写入行协议的四种方式
    小T导读:为了在数据采集项频繁变动的情况下保证用户仍然能够顺利地完成数据记录工作,TDengine 提供了三种无模式写入协议,分别是InfluxDBLine协议、OpenTSDB Telnet协......