位集的使用

    位集bitset是C++的一个类库,其声明方式为bitset<variable_length> variable(val);其中variable_length是需要的位的长度,variable是变量名,val为初始化值。下面就通过利用bitset对一个文件进行排序的方式简要说明bitset的使用方式。

  假设文件里面没有重复的数字,文件的长度不超过1000,文件里面每个单独的数字也不超过1000。

 1 int FileSort(string fileName)
 2 {
 3     if (0 == fileName.size())
 4     {
 5         return 1;
 6     }
 7 
 8     ifstream readFile(fileName, ios_base::out);
 9     ofstream resultFile("result.txt", ios_base::in);
10 
11     if (!readFile.is_open() || !resultFile.is_open())
12     {
13         return 1;
14     }
15 
16     bitset<1000> nBitset(0);
17     int tmp;
18     
19     while (readFile >> tmp)
20     {
21         nBitset.set(tmp);
22     }
23 
24     for (size_t i = 0; i < 1000; ++i)
25     {
26         if (nBitset.test(i))
27         {
28             resultFile << i << " ";
29         }
30     }
31 
32     return 0;
33 }

一个简单的测试结果:

原文地址:https://www.cnblogs.com/ldjhust/p/3092592.html