• 软件设计迭代器模式


    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();
        }
    }

    运行结果

  • 相关阅读:
    如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版】(ZZ伯乐在线)
    探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法
    Slope One :简单高效的协同过滤算法(Collaborative Filtering)(ZZ)
    非常的好的协同过滤入门文章(ZZ)
    防止rm误操作的方法(zz)
    CentOS使用YUM安装Adobe Flash Player
    今天尝试dd命令制作CentOS启动优盘
    关于php中,POST方法接收不到内容
    linux系统下使用vim 显示行号~
    打开php的错误提示
  • 原文地址:https://www.cnblogs.com/Arisf/p/15685689.html
Copyright © 2020-2023  润新知