位集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 }
一个简单的测试结果: