zoukankan      html  css  js  c++  java
  • 软件设计迭代器模式

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

    运行结果

  • 相关阅读:
    在.netframework 4.5.2项目上集成identityserver4的登录功能
    Elasticsearch学习笔记之—测试查询分词器的分词结果
    asp.net core mysql 错误提示:Out of memory (Needed***
    Elasticsearch学习笔记之— excludes的高级用法
    正则表达式(.*?)
    WPF里实现imageButton的步骤
    Elasticsearch学习笔记之—wildcard、fuzzy、regexp、prefix
    Elasticsearch学习笔记之—数据范围查询
    工具小方法
    lambda表达式
  • 原文地址:https://www.cnblogs.com/Arisf/p/15685689.html
Copyright © 2011-2022 走看看