我正在尝试使用 STL 排序对缓冲区进行排序。现在,我使用 qsort 但我读到 stlsort 由于内联“比较”功能而具有更好的性能。缓冲区有大小为 52 的元素。例如,它有 1024 个大小为 52 的元素。这是我的代码的一部分。它运行良好,但我想使用 STL 排序。我正在排序一个固定长度的文件。每个固定长度的文件都有一个记录大小,因此用户必须告知记录大小。在下面的示例中,我输入了 52。
HANDLE hInFile;
char * sharedBuffer;
int recordSize = 52;
sharedBuffer = new char [totalMemory];
hInFile = CreateFile(LPCSTR(filePathIn), GENERIC_READ, 0, NULL, OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN, NULL);
ReadFile(hInFile, sharedBuffer, totalMemory, &dwBytesRead, NULL);
CloseHandle(hInFile);
qsort(sharedBuffer, dwBytesRead/recordSize, recordSize, compare); //sort using qsort but i want to use the slt sort
WriteFile(hOutFile, sharedBuffer, dwBytesRead, &dwBytesRead, NULL);
CloseHandle(hOutFile); //write the sorted buffer to disk
int compare (const void * a, const void * b)
{
return memcmp((char *)a, (char *)b, recordSize);
}
我可以用其他方式读取文件吗?使用向量,迭代器?
谢谢您的帮助!