// Bitset应用.cpp : 定义控制台应用程序的入口点。
//VS 2005
//用bitset表示某个学生的出勤
#include "stdafx.h"
#include <bitset>
#include <iostream>
using namespace std;
class CQSheetError{
string strInfo;
public:
CQSheetError(string& str) : strInfo(str)
{
}
virtual ~CQSheetError(){}
char* what() const
{
return const_cast<char*>(strInfo.c_str());
}
};
//CQ:出勤
template <size_t Days>
class CQSheet{
bitset<Days> CQInfo;
public:
void SetAttendence(size_t day, bool bAtdence = true);
bool IsAttendence(size_t day);
};
template<size_t Days>
void CQSheet<Days>::SetAttendence(size_t day, bool bAtdence /* = true */)
{
if (day > Days)
{
throw CQSheetError(string("超出所存信息的天数范围!"));
}
CQInfo.set(day,bAtdence);
}
template<size_t Days>
bool CQSheet<Days>::IsAttendence(size_t day)
{
if(day > Days)
throw CQSheetError(string("超出所存信息的天数范围!"));
return CQInfo.at(day);
}
int _tmain(int argc, _TCHAR* argv[])
{
CQSheet<12> stu;
for(size_t i = 0; i < 12; i++)
{
stu.SetAttendence(i,(i + rand())%2);
}
try{
stu.IsAttendence(100);
}
catch(CQSheetError& s)
{
cout << s.what() << endl;
}
system("pause");
return 0;
}
bitset应用
最新推荐文章于 2022-09-09 16:39:02 发布