二维数组中查寻某个值的实现思路
二维数组中查找某个值的实现思路
给定一个二维数组int t[m][n],其中m和n千万级别,且t中没有任何的规律(如有序等)。有什么好的办法,在不用多线程等技术的前提下高效的实现?
------解决思路----------------------
用文件当数组使用吧
------解决思路----------------------
没有规律,你还是要遍历一遍的。
------解决思路----------------------
英雄所见略同!
------解决思路----------------------
Linux下参考
void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset);
------解决思路----------------------
int t[m][n]可以有那么大??m和n都千万级别,不说栈暴了,堆都暴了
如果要想查找快,你放数据就应该用关联式容器(如哈希表等储存),否则你查找时只能逐个遍历
给定一个二维数组int t[m][n],其中m和n千万级别,且t中没有任何的规律(如有序等)。有什么好的办法,在不用多线程等技术的前提下高效的实现?
------解决思路----------------------
用文件当数组使用吧
------解决思路----------------------
没有规律,你还是要遍历一遍的。
------解决思路----------------------
英雄所见略同!
------解决思路----------------------
// 创建文件句柄
HANDLE hFile = ::CreateFile(lpszFileName, GENERIC_READ, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
// 创建文件映射
HANDLE hMap = ::CreateFileMapping(hFile, NULL, PAGE_READONLY
------解决思路----------------------
SEC_COMMIT, NULL, NULL, NULL);
// 读取映射中的内存
LPVOID lpBuffer = ::MapViewOfFile(hMap, FILE_MAP_READ, NULL, NULL, NULL);
// 好了文件的内存已经获取了,你可以随意处理了
// 释放映射内存
::UnmapViewOfFile(lpBuffer);
// 关闭文件映射
::CloseHandle(hMap);
// close file handle
::CloseHandle(hFile);
Linux下参考
void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset);
------解决思路----------------------
int t[m][n]可以有那么大??m和n都千万级别,不说栈暴了,堆都暴了
如果要想查找快,你放数据就应该用关联式容器(如哈希表等储存),否则你查找时只能逐个遍历