我的文本文件中有大约25百万个由行分隔的整数.我的第一个任务是采用那些整数并对它们进行排序.我实际上已经实现了读取整数并将它们放入数组中(因为我的排序函数将未排序的数组作为参数).但是,从文件中读取整数是一个非常漫长且昂贵的过程.我已经搜索了许多其他解决方案,以获得更便宜和有效的方式来做到这一点,但我找不到一个解决这种大小的解决方案.因此,您的建议是从巨大的(大约260MB)文本文件中读取整数.而且我如何才能有效地获得相同问题的行数.
ifstream myFile("input.txt");
int currentNumber;
int nItems = 25000000;
int *arr = (int*) malloc(nItems*sizeof(*arr));
int i = 0;
while (myFile >> currentNumber)
{
arr[i++] = currentNumber;
}
Run Code Online (Sandbox Code Playgroud)
这就是我从文本文件中获取整数的方法.它并不复杂.我假设行数是固定的(实际上是固定的)
顺便说一句,当然不是太慢.它使用2.2GHz i7处理器在OS X中完成大约9秒的读取.但我觉得它会好得多.