读书人

编程珠玑第一篇的一个有关问题

发布时间: 2012-06-24 18:32:37 作者: rapoo

编程珠玑第一篇的一个问题
第一篇中的问题:给n个不相重复的数进行排序,(n<10^7) 用的方法是位图的方法。但是我的程序运行的时候,我通过任务管理器看到的内存使用是10M左右,和理论分析的1.25M差的也太多了。求大神指教。下面是我的程序

C/C++ code
#include <iostream>#include <fstream>using namespace std;const int n = 10000000;bool a[n] = {false};int main(){    ifstream inFile("data.txt",ios::in);    int k;    inFile >> k;    int i;    int t;    for (i = 0;i < k;i++)    {        inFile >> t;        a[t] = true;    }    inFile.close();    ofstream outFile("result.txt",ios::out);    outFile << k << endl;    for (i = 0;i < n;i++)        if (a[i])            outFile << i << "\t";    outFile.close();    return 0;}


[解决办法]
位图,顾名思义,用位来表示
bool虽然有效位只有1位,但它依然占用1字节,1字节=8位
所以1.25*8=10
[解决办法]
在C++里,bool占用1字节,八位

想实现位图,请自行用int、使用位操作来做

读书人网 >C++

热点推荐