#include <list>
#include <string>
using namespace std;
typedef struct DiskInfo_st
{
int diskNo;
bool isUsed;
string diskName;
} DiskInfo; class DiskManager
{
private:
list<DiskInfo> m_list; public:
bool AddDisk(const string& name);
bool RemoveDisk(int num);
void Traverse();
};
#include "disk_manager.h"

bool DiskManager::AddDisk(const string& name)
{ for(list<DiskInfo>::iterator it = m_list.begin(); it != m_list.end(); it++)
{
if(!(*it).isUsed)
{
(*it).diskName = name;
(*it).isUsed = true;
return true;
}
}
DiskInfo disk;
disk.diskNo = m_list.size();
disk.diskName = name;
disk.isUsed = true; cout << "hello" << endl;
m_list.push_back(disk);
return true;
} bool DiskManager::RemoveDisk(int num)
{
if(num < || num >= m_list.size())
{
cout << "The No. of disk is wrong." << endl;
return false;
}
for(list<DiskInfo>::iterator it = m_list.begin(); it != m_list.end(); it++)
{
if((*it).diskNo == num)
{
(*it).isUsed = false;
return true;
}
}
} void DiskManager::Traverse()
{
for(list<DiskInfo>::iterator it = m_list.begin(); it != m_list.end(); it++)
{
cout << "No. " << (*it).diskNo;
cout << " name: " << (*it).diskName;
cout << " usedState: " << ((*it).isUsed ? "Yes" : "No") << endl;
}
}
#include <iostream>
#include "disk_manager.h" using namespace std; int main(int argc, char *argv[])
{
DiskManager diskManager;
diskManager.AddDisk("sda");
diskManager.AddDisk("sdb");
diskManager.AddDisk("sdc");
diskManager.AddDisk("sdd");
diskManager.AddDisk("sdf");
diskManager.Traverse();
cout << endl << endl;
diskManager.RemoveDisk();
diskManager.Traverse();
cout << endl << endl;
diskManager.AddDisk("sdg");
diskManager.Traverse(); cout << endl << endl;
diskManager.AddDisk("sdj");
diskManager.Traverse();
return ;
}

一个关于STL list使用 小示例的更多相关文章

  1. ReactNative新手学习之路06滚动更新ListView数据的小示例

    本节带领大家学习使用ListView 做一个常用的滚动更新数据示例: 知识点: initialListSize={200} 第一次加载多少数据行 onEndReached={this.onEndRea ...

  2. 一个openMP编程处理图像的示例

    一个openMP编程处理图像的示例: 从硬盘读入两幅图像,对这两幅图像分别提取特征点,特征点匹配,最后将图像与匹配特征点画出来.理解该例子需要一些图像处理的基本知识,我不在此详细介绍.另外,编译该例需 ...

  3. 用c#写的一个局域网聊天客户端 类似小飞鸽

    用c#写的一个局域网聊天客户端 类似小飞鸽 摘自: http://www.cnblogs.com/yyl8781697/archive/2012/12/07/csharp-socket-udp.htm ...

  4. python(三)一个文件读写操作的小程序

    我们要实现一个文件读写操作的小程序 首先我们有一个文件 我们要以"============"为界限,每一个角色分割成一个独立的txt文件,按照分割线走的话是分成 xiaoNa_1. ...

  5. 笔试题&amp;面试题:找出一个数组中第m小的值并输出

    题目:找出一个数组中第m小的值并输出. 代码: #include <stdio.h> int findm_min(int a[], int n, int m) //n代表数组长度,m代表找 ...

  6. MVC客户端验证的小示例

    MVC客户端验证的小示例 配置客户端验证的可用性: <configuration> <appSettings>  <add key="ClientValidat ...

  7. 一个基于ES5的vue小demo

    由于现在很多vue项目都是基于ES6开发的,而我学vue的时候大多是看vue官网的API,是基于ES5的,所以对于刚接触项目的我来说要转变为项目的模块化写法确实有些挑战.因此,我打算先做一个基于ES5 ...

  8. VC++:制作一个控件注册的小工具

    在平时的工作中,时常需要注册与反注册ActiveX控件,有时需要判断控件是否已经注册.   所以通过查找资料编写了一个控件注册的小工具,欢迎学习交流,不当之处请多多交流. 先直接上图:   主要代码: ...

  9. 【.Net】Socket小示例

    引言 项目中用到了Socket,这里做个控制台小示例记录一下. Client 客户端的Receive用了异步方法,保持长连接,可以随时发送消息和响应服务端的消息,如下 static string Cl ...

随机推荐

  1. MySql 枚举和集合 详解

    枚举与集合 枚举类型,enum 每个枚举值均有一个索引值: 在列说明中列表值所允许的成员值被从 1 开始编号. 一般来说就是单选,在定义枚举的时候列出所有的可能性: 代码如下 1. create ta ...

  2. mysql之存储过程基础

    存储过程 procedure 可以理解为一个处理增删改,没有返回值得函数 创建存储过程的基本语法 create procedure 过程名 ([参数列表]) begin --过程体 end 存储过程主 ...

  3. linux 下用find命令查找文件,rm命令删除文件

    linux 下用find命令查找文件,rm命令删除文件. 删除指定目录下指定文件find 要查找的目录名 -name .svn |xargs rm -rf 删除指定名称的文件或文件夹: find -t ...

  4. 《深入实践C++模板编程》之六——标准库中的容器

    1.容器的基本要求 a.并非所有的数据都可以放进容器当中.各种容器模板对所存数据类型都有一个基本要求——可复制构造.将数据放进容器的过程就是通过数据的复制构造函数在容器内创建数据的一个副本的过程. b ...

  5. 将磁盘从FAT格式转换为NTFS格式的方法

    不需要进行格式化,只需在命令提示符中输入如下内容:CONVERT X:/FS:NTFS把X换成你需要的盘符,转一个盘需十几或几十秒不等..注意:此方法不可逆转,FAT32转到NTFS后不可转回,当然也 ...

  6. MVC4中使用EntityFramework

    首先,MVC4不支持EntityFramwok 6版本,如果安装了EntityFramwok 6,则vs不会自动引用dll和修改web.config配置.先删除旧的版本,执行指令:Uninstall- ...

  7. C#异步编程学习笔记之-async和await

    一.异步方法介绍(async和await):如果使用async修饰符将某种方法指定为异步方法,即启用以下两种功能.1.标记的异步方法可以使用await来指定暂停点.await运算符通知编译器异步方法: ...

  8. 简单的todolist的demo

    放上代码: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF ...

  9. 【转】FireMonkey ListView 自动计算行高

    说明:展示 ListView 视其每一行 Item 的 Detail 字串长度自动调整高度(可每行高度不同). 适用:Delphi XE7 / XE8 源码下载:[原创]ListView_自动计算行高 ...

  10. JAVA语言程序设计课后习题----第一单元解析(仅供参考)

    1 本题是水题,基本的输出语句 public class test { public static void main(String[] args) { // 相邻的两个 "" 要 ...