C++ Primer(第5版) 练习 17.13
练习 17.13 编写一个整型对象,包含真/假测验的正确答案。使用它来为前两题中的数据结构生成测验成绩。
环境:Linux Ubuntu(云服务器)
工具:vim
代码块:
#include<iostream>
#include<bitset>
using namespace std;
template <size_t N> class exam {
public:
exam(): s() {]
size_t get_size() { return N; }
void set_solution(size_t n, bool b) { s.set(n, b); }
bitset<N> get_solution() const { return s; }
size_t score(const bitset<N> &a);
private:
bitset<N> s;
};
template <size_t N> size_t exam<N>::score(const bitset<N> &a){
size_t ret = 0;
for(size_t i = 0; i < N; i++){
if(s[i] == a[i]){
ret++;
}
}
return ret;
}
int main(){
exam<100> e;
e.set_solution(0, 1);
e.set_solution(99, 1);
cout<<e.get_solution()<<endl;
bitset<100> a;
cout<<e.score(a)<<" correct answers out of "<<e.get_size()<<endl;
return 0;
}