list 容器的实际使用

17 篇文章 0 订阅

前言     

        list容器是一种有序集合,可以存储任意类型的元素,可以增删改查元素,支持索引操作和迭代遍历。

        在c++中,容器的作用大多有做数据库使用,我这里以list 容器的一个小例题为例:

// 在C++ 中,使用list容器实现一个简单的待办事项列表。用户可以执行添加任务、删除任务和显示所有任务的操作。请编写一个程序,实现这些功能 

        在编程过程中,我们应该要养成分模块化思想。

一  创建各功能模块函数

1.1 显示所有待办事项

代码如下:

//显示所有待办事项
void display_to(const list<string> &p)
{
    cout << "当前的所有待办事项:" << endl;
    for (list<string>::const_iterator a = p.begin(); a != p.end();a++)
    {
        cout << "-" << *a << endl;
    }
}

        我在代码使用了STL中的list容器和迭代器进行遍历,通过引用传递来避免不必要的拷贝。

1.2 添加一个待办事项

代码如下:

//添加一个待办事项
void increase_to(list<string> &p,const string &str)
{
    p.push_back(str);
    cout << "已添加待办事项 :" << str << endl;
}

        增加待办事项功能实现,这里需要两个参数,一个是容器,另一个则是需要添加的成员。

1.3 删除一个待办事项

代码如下:

//删除一个待办事项
void remove_to(list<string> &p,string &str)
{
    list<string>::iterator a = find(p.begin(), p.end(), str);//这里返回对应的迭代器
    if(a != p.end())  //判断是否在容器内
    {
        p.erase(a);
        cout << "已删除待办事项:" << str << endl;
    }
    else
    {
        cout << "找不到代办事项,不存在 " << endl;
    }
}

        我在代码中实现了从一个待办事项列表中删除指定事项的功能。通过迭代器在列表中查找待删除的事项,如果找到则删除并输出删除成功的消息,否则输出找不到该事项的消息。需要传入两个参数,一个为容器,另一个为想要删除的成员。

二 主函数中的实现

2.1 创建容器及两个变量

 list<string> v;
 string command, task;

2.2 判断执行哪个功能函数

代码如下:

 while(1)
    {
        cout << "请输入指令: ( 查看, 添加 , 删除 ,退出 )" << endl;
        cout << "请输入: ";
        cin >> command;
        if (command == "查看")    //查看所有的成员
        {
            display_to(v);
            printf("\n\n");
        }
        else if(command == "删除")   //删除事项
        {
            cout << "请输入你要删除的事项" << endl;
            cout << "请输入: ";
            cin >> task;
            remove_to(v, task);
            printf("\n\n");
        }
        else if(command == "添加")    //添加事项
        {
            cout << "请输入你想要添加的事项" << endl;
            cout << "请输入: ";
            cin >> task;
            increase_to(v, task);
            printf("\n\n");
        }
        else if(command == "退出")   //退出
        {
            cout << "程序结束" << endl;
            break;
        }
        else
        {
            cout << "输出错误,请重新输入 " << endl;
            printf("\n\n");
        }
    }

涉及知识点:

  1. 循环结构:使用了一个无限循环的while(1),可以不断接收用户输入的指令。
  2. 条件判断:根据用户输入的指令,使用if-else语句来执行不同的操作。
  3. 输入输出:使用cout和cin来实现用户与程序的交互,用户可以输入指令和任务。
  4. 函数调用:根据指令调用不同的函数,如display_to()用于显示所有任务,remove_to()用于删除任务,increase_to()用于添加任务。
  5. 数据存储:使用了一个向量v来存储任务,向量是一种动态数组,可以实现灵活的数据存储。
  6. 跳出循环:当用户输入"退出"指令时,使用break语句跳出循环,结束程序的执行。 通过这段代码,可以学习到如何使用循环、条件判断、函数调用和数据存储来实现简单的任务管理功能。

整体代码

#include <iostream>
#include <list>
#include <algorithm>
#include <string>
using namespace std;

//显示所有待办事项
void display_to(const list<string> &p)
{
    cout << "当前的所有待办事项:" << endl;
    for (list<string>::const_iterator a = p.begin(); a != p.end();a++)
    {
        cout << "-" << *a << endl;
    }
}

//添加一个待办事项
void increase_to(list<string> &p,const string &str)
{
    p.push_back(str);
    cout << "已添加待办事项 :" << str << endl;
}

//删除一个待办事项
void remove_to(list<string> &p,string &str)
{
    list<string>::iterator a = find(p.begin(), p.end(), str);
    if(a != p.end())
    {
        p.erase(a);
        cout << "已删除待办事项:" << str << endl;
    }
    else
    {
        cout << "找不到代办事项,不存在 " << endl;
    }
}

int main()
{
    // 在C++ 中,使用list容器实现一个简单的待办事项列表。用户可以执行添加任务、删除任务和显示所有任务的操作。请编写一个程序,实现这些功能。
    list<string> v;
    string command, task;
    while(1)
    {
        cout << "请输入指令: ( 查看, 添加 , 删除 ,退出 )" << endl;
        cout << "请输入: ";
        cin >> command;
        if (command == "查看")    //查看所有的成员
        {
            display_to(v);
            printf("\n\n");
        }
        else if(command == "删除")   //删除事项
        {
            cout << "请输入你要删除的事项" << endl;
            cout << "请输入: ";
            cin >> task;
            remove_to(v, task);
            printf("\n\n");
        }
        else if(command == "添加")    //添加事项
        {
            cout << "请输入你想要添加的事项" << endl;
            cout << "请输入: ";
            cin >> task;
            increase_to(v, task);
            printf("\n\n");
        }
        else if(command == "退出")   //退出
        {
            cout << "程序结束" << endl;
            break;
        }
        else
        {
            cout << "输出错误,请重新输入 " << endl;
            printf("\n\n");
        }
    }
    return 0;
}

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值