软件设计:实验18:迭代器模式

实验18:迭代器模式

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

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

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

 

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

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

实验要求:

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

2. 提交源代码;

3. 注意编程规范。

 

1. Java中,可以使用Iterator接口来实现迭代器模式。对于ArrayListLinkedList等集合类,可以直接使用iterator()方法获取迭代器。

    C++中,可以使用STLStandard Template Library)中的迭代器来遍历容器,如std::vectorstd::list等。

2. 1JAVA

import java.util.*;

 

class Student {

    String name;

    String id;

    int age;

 

    public Student(String name, String id, int age) {

        this.name = name;

        this.id = id;

        this.age = age;

    }

 

    @Override

    public String toString() {

        return "Student{" +

                "name='" + name + '\'' +

                ", id='" + id + '\'' +

                ", age=" + age +

                '}';

    }

}

 

public class IteratorExample {

    public static void main(String[] args) {

        List<Student> students = new ArrayList<>();

        students.add(new Student("Alice", "001", 20));

        students.add(new Student("Bob", "002", 22));

        students.add(new Student("Charlie", "003", 21));

 

        // 正序遍历

        System.out.println("正序遍历:");

        for (Student student : students) {

            System.out.println(student);

        }

 

        // 反序遍历

        System.out.println("反序遍历:");

        for (int i = students.size() - 1; i >= 0; i--) {

            System.out.println(students.get(i));

        }

 

        // 使用迭代器遍历

        System.out.println("使用迭代器遍历:");

        Iterator<Student> iterator = students.iterator();

        while (iterator.hasNext()) {

            System.out.println(iterator.next());

        }

    }

}

(2)C++

#include <iostream>

#include <vector>

#include <algorithm>

 

class Student {

public:

    std::string name;

    std::string id;

    int age;

 

    Student(std::string name, std::string id, int age) : name(name), id(id), age(age) {}

 

    friend std::ostream& operator<<(std::ostream& os, const Student& student) {

        os << "Student{" <<

            "name='" << student.name << '\'' <<

            ", id='" << student.id << '\'' <<

            ", age=" << student.age <<

            '}';

        return os;

    }

};

 

int main() {

    std::vector<Student> students;

    students.emplace_back("Alice", "001", 20);

    students.emplace_back("Bob", "002", 22);

    students.emplace_back("Charlie", "003", 21);

 

    // 正序遍历

    std::cout << "正序遍历:" << std::endl;

    for (const auto& student : students) {

        std::cout << student << std::endl;

    }

 

    // 反序遍历

    std::cout << "反序遍历:" << std::endl;

    for (auto it = students.rbegin(); it != students.rend(); ++it) {

        std::cout << *it << std::endl;

    }

 

    // 使用迭代器遍历

    std::cout << "使用迭代器遍历:" << std::endl;

    for (auto it = students.begin(); it != students.end(); ++it) {

        std::cout << *it << std::endl;

    }

 

    return 0;

}

posted @   痛苦代码源  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示