#include <iostream>
#include <bitset>
using namespace std;
template<size_t N>
class Quiz
{
public:
Quiz() {}
Quiz(const string &s) :
bit_quiz(s){}
template<size_t M>
friend ostream& operator <<(ostream&, Quiz<M> const&);
void update(size_t, bool);
template<size_t N>
friend size_t grade(Quiz<N> const &, Quiz<N> const &);
private:
bitset<N> bit_quiz;
};
int main()
{
Quiz<10> b("1010101");
cout<<b<<endl;
b.update(1, true);
cout<<b<<endl;
Quiz<10> an("1010100");
cout<<grade(b, an);
return 0;
}
template<size_t M>
ostream& operator <<(ostream &os, Quiz<M> const &q)
{
os<<q.bit_quiz;
return os;
}
template<size_t N>
void Quiz<N>::update(unsigned pos, bool v)
{
bit_quiz.set(pos, v);
}
template<size_t N>
size_t grade(const Quiz<N> &s1, Quiz<N> const &s2)
{
auto i = s1.bit_quiz ^ s2.bit_quiz;
i.flip();
return i.count();
}
c++ primer第五版练习17.11 17.12 17.13
最新推荐文章于 2021-02-09 22:40:14 发布