一个关于STL list使用 小示例
#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使用 小示例的更多相关文章
- ReactNative新手学习之路06滚动更新ListView数据的小示例
本节带领大家学习使用ListView 做一个常用的滚动更新数据示例: 知识点: initialListSize={200} 第一次加载多少数据行 onEndReached={this.onEndRea ...
- 一个openMP编程处理图像的示例
一个openMP编程处理图像的示例: 从硬盘读入两幅图像,对这两幅图像分别提取特征点,特征点匹配,最后将图像与匹配特征点画出来.理解该例子需要一些图像处理的基本知识,我不在此详细介绍.另外,编译该例需 ...
- 用c#写的一个局域网聊天客户端 类似小飞鸽
用c#写的一个局域网聊天客户端 类似小飞鸽 摘自: http://www.cnblogs.com/yyl8781697/archive/2012/12/07/csharp-socket-udp.htm ...
- python(三)一个文件读写操作的小程序
我们要实现一个文件读写操作的小程序 首先我们有一个文件 我们要以"============"为界限,每一个角色分割成一个独立的txt文件,按照分割线走的话是分成 xiaoNa_1. ...
- 笔试题&面试题:找出一个数组中第m小的值并输出
题目:找出一个数组中第m小的值并输出. 代码: #include <stdio.h> int findm_min(int a[], int n, int m) //n代表数组长度,m代表找 ...
- MVC客户端验证的小示例
MVC客户端验证的小示例 配置客户端验证的可用性: <configuration> <appSettings> <add key="ClientValidat ...
- 一个基于ES5的vue小demo
由于现在很多vue项目都是基于ES6开发的,而我学vue的时候大多是看vue官网的API,是基于ES5的,所以对于刚接触项目的我来说要转变为项目的模块化写法确实有些挑战.因此,我打算先做一个基于ES5 ...
- VC++:制作一个控件注册的小工具
在平时的工作中,时常需要注册与反注册ActiveX控件,有时需要判断控件是否已经注册. 所以通过查找资料编写了一个控件注册的小工具,欢迎学习交流,不当之处请多多交流. 先直接上图: 主要代码: ...
- 【.Net】Socket小示例
引言 项目中用到了Socket,这里做个控制台小示例记录一下. Client 客户端的Receive用了异步方法,保持长连接,可以随时发送消息和响应服务端的消息,如下 static string Cl ...
随机推荐
- redis 事务 事务机制详解 MULTI、EXEC、DISCARD、WATCH
1. Redis服务端是个单线程的架构,不同的Client虽然看似可以同时保持连接,但发出去的命令是序列化执行的,这在通常的数据库理论下是最高级别的隔离2. 用MULTI/EXEC 来把多个命令组装成 ...
- 修改NPM默认全局安装路径
场景: 最近在新电脑上鼓捣完环境后,打算切换下源,结果使用全局安装的nrm时提示找不到命令,之前都是这么用现在怎么不行了呢? 排查过程: 于是各种折腾,发现- g安装的插件目录在C盘中的某个路径中,后 ...
- JS基础_流程控制语句
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- centos配置vsftpd服务2
ftp搭建 一.搭建前提a.ssh服务已经开启,b.防火墙关闭,c.连网1.查看ssh和防火墙的状态 service sshd status service iptables status 2.开启s ...
- otter+canal
https://blog.csdn.net/u011142688/article/details/52046928 https://blog.csdn.net/chenzeyuczy/article/ ...
- SpringBoot返回页面乱码解决
SpringBoot,在做全局异常处理的时候,返回中文字符串时,出现乱码情况,网上查阅资料之后,解决方式如下所示,自定义WebConfiguration继承WebMvcConfigurationSup ...
- 短信对接——一种jdbc链接运用
package sms; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamRead ...
- ASE19 团队项目 模型组 scrum report集合
scrum report 链接 scrum1 report scrum2 report scrum3 report scrum4 report scrum5 report scrum6 report ...
- zookeeper配置文件说明
zoo.cfg #zoo.cfg 的内容 # 心跳检查的时间 2秒 tickTime=2000 # 初始化时 连接到服务器端的间隔次数,总时间10*2=20秒 initLimit=10 # ZK Le ...
- JavaWeb【Servlet】
概念 Servlet是在服务器上运行的小程序.一个Servlet请求对应一个Java类(对应一个Wrapper容器),可以通过请求-响应模式访问这个驻留在内存中的小程序. Tomcat容器等级 上图表 ...