2023/10/22 每日总结

今天完成了设计模式实验18

实验18:迭代器模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 

1、理解迭代器模式的动机,掌握该模式的结构;

2、能够利用迭代器模式解决实际问题。

 

[实验任务一]JAVAC++常见数据结构迭代器的使用

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

实验要求:

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

Java

 

package org.test18;

public class Student {
    String name;
    int id;
    int age;

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



package org.test18;

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

public class StudentIterator {
    public static void main(String[] args) {
        ArrayList<Student> students = new ArrayList<>();

        // 添加学生信息
        students.add(new Student("zhangsan", 20210001, 20));
        students.add(new Student("lisi", 20210002, 22));
        students.add(new Student("wangwu", 20210003, 21));
        students.add(new Student("zhaoliu", 20210004, 18));
        // 添加更多学生信息...

        // 按照学号从小到大排序
        Collections.sort(students, (s1, s2) -> Integer.compare(s1.id, s2.id));

        // 使用迭代器遍历学生信息(从小到大)
        Iterator<Student> iterator = students.iterator();
        while (iterator.hasNext()) {
            Student student = iterator.next();
            System.out.println("Name: " + student.name + ", ID: " + student.id + ", Age: " + student.age);
        }

        System.out.println();

        // 按照学号从大到小排序
        Collections.sort(students, (s1, s2) -> Integer.compare(s2.id, s1.id));

        // 使用迭代器遍历学生信息(从大到小)
        iterator = students.iterator();
        while (iterator.hasNext()) {
            Student student = iterator.next();
            System.out.println("Name: " + student.name + ", ID: " + student.id + ", Age: " + student.age);
        }
    }
}

 

C++

#include <iostream>
#include <vector>
#include <algorithm>

class Student {
public:
    std::string name;
    int id;
    int age;

    Student(std::string n, int i, int a) : name(n), id(i), age(a) {}
};

int main() {
    std::vector<Student> students;

    // 添加学生信息
    students.push_back(Student("zhangsan", 20210001, 20));
    students.push_back(Student("lisi", 20210002, 22));
    students.push_back(Student("wangwu", 20210003, 18));
    students.push_back(Student("zhaoliu", 20210004, 24));
    // 添加更多学生信息...

    // 按照学号从小到大排序
    std::sort(students.begin(), students.end(), [](const Student& s1, const Student& s2) {
        return s1.id < s2.id;
    });

    // 使用迭代器遍历学生信息(从小到大)
    for (const auto& student : students) {
        std::cout << "Name: " << student.name << ", ID: " << student.id << ", Age: " << student.age << std::endl;
    }

    std::cout << std::endl;

    // 按照学号从大到小排序
    std::sort(students.begin(), students.end(), [](const Student& s1, const Student& s2) {
        return s1.id > s2.id;
    });

    // 使用迭代器遍历学生信息(从大到小)
    for (const auto& student : students) {
        std::cout << "Name: " << student.name << ", ID: " << student.id << ", Age: " << student.age << std::endl;
    }

    return 0;
}

 

posted @ 2023-10-22 20:17  樱花开到我身边  阅读(10)  评论(0)    收藏  举报