小编Ben*_*Ben的帖子

从Qt中的QKeyEvent获取密钥的"名称"

是否有一种简单的方法来获取密钥的名称(所以从关键事件中获取"uparrow"而不仅仅是获取密钥代码"16777235")?我是否必须自己制作一个关键名单?

c++ qt key qkeyevent

11
推荐指数
2
解决办法
2万
查看次数

更快地从/向文件读取/写入std :: unordered_map的方法

我正在处理一些非常大std::unordered_map的(数亿条目),需要将它们保存到文件中并从文件中加载它们.我目前这样做的方法是迭代地图并一次读取/写入每个键和值对:

std::unordered_map<unsigned long long int, char> map;

void save(){
    std::unordered_map<unsigned long long int, char>::iterator iter;
    FILE *f = fopen("map", "wb");
    for(iter=map.begin(); iter!=map.end(); iter++){
        fwrite(&(iter->first), 8, 1, f);
        fwrite(&(iter->second), 1, 1, f);
    }
    fclose(f);
}

void load(){
    FILE *f = fopen("map", "rb");
    unsigned long long int key;
    char val;
    while(fread(&key, 8, 1, f)){
        fread(&val, 1, 1, f);
        map[key] = val;
    }
    fclose(f);
}
Run Code Online (Sandbox Code Playgroud)

但是有大约6.24亿条记录,从文件中读取地图需要9分钟.写入文件速度更快但仍需要几分钟.有更快的方法吗?

algorithm performance unordered-map c++11

7
推荐指数
2
解决办法
2582
查看次数

标签 统计

algorithm ×1

c++ ×1

c++11 ×1

key ×1

performance ×1

qkeyevent ×1

qt ×1

unordered-map ×1