编程珠玑一书相关代码

来源:互联网 发布:淘宝店怎么注销重开 编辑:程序博客网 时间:2024/05/29 03:07

最近阅读编程珠玑,把书上的内容全部代码实现一遍来练练手
1.
文件中存有不重复的数字,如何在内存不足的情况下将其排序,由小到大输出?
这里简化一下,假装文件里面只有不大于10的几个数字
实现的代码如下:

#define SET_BIT(bit_,num_) (num_=((1<<bit_)|num_))#define GET_BIT(bit_,num_) (num_&(1<<bit_))unsigned short int storage16bit = 0;//读入文件中的数字void sortRead(){    char num[2] = { 0 };    std::ifstream in("in.txt");    if (!in.is_open())    {        std::cout << "open file in.text filed!";        exit(-1);    }    while (!in.eof())    {        in.getline(num, 2);        SET_BIT(atoi(num), storage16bit);    }    in.close();}//写排序好的数字void sortWrite(){    std::ofstream out("out.txt");    if (!out.is_open())    {        std::cout << "open file out.text filed!";        exit(-1);    }    for (int i = 0; i < 10; i++)    {        if (GET_BIT(i, storage16bit))        {            out << i << std::endl;        }    }    out.close();}