小编Aja*_*jay的帖子

散列的 unordered_map

从某些来源^,我得到了一个长度为 20 (SHA-1) 的哈希缓冲区,用于特定数据(比如文件或字节块)。如果给定的哈希值(将其视为字符串,而不是哈希)是没有在地图中找到,那么我会拉更多的信息,然后将这个散列这一信息。要说清楚:

  • unordered_map<Hash_of_20_Bytes, Information>

这是我的地图。键是一个 20 字节的缓冲区,Information是一些包含详细信息的结构。因此,如果源 ^给了我一些散列,我会在此信息映射中查找该散列并适当地使用/生成。

关键是,就我而言,给定的 20 字节散列保证没有任何冲突。但是,unordered_map仍会计算密钥的 (FNV) 哈希值(密钥本身就是哈希值!)。我不能指示集合类不要生成散列,而是使用具有唯一键本身的键(以确保 O(1))?

我不确定是否也unordered_map计算整数的散列(即减少额外计算的需要)。

一种方法是使用pair<20-byte, Info>自身的向量,并进行二分搜索。然而,只是为了避免哈希计算的惩罚(通过哈希容器),它会导致保持向量排序的更多惩罚)。

c++ hash c++14

1
推荐指数
1
解决办法
469
查看次数

MFC应用程序的退出功能在哪里?

我似乎无法在我的mfc应用程序代码中找到任何退出函数.当我点击应用程序右上角的红叉时,我希望我的应用程序实际保存一些设置.谁知道这个出口功能在哪里?谢谢

c++ mfc visual-c++

0
推荐指数
1
解决办法
6355
查看次数

如何检查int类型的变量,cin不会将数字作为字符

我是C++的新手.我写了一个函数,我希望用户输入一个整数值.我知道如何使用以下方法阻止输入字符:

    if(!(cin>>a)) 
Run Code Online (Sandbox Code Playgroud)

要么

    if (cin.fail())
Run Code Online (Sandbox Code Playgroud)

哪里a是类型int.如果用户首先输入字符然后输入例如:ab12代码的数字,但是如果用户输入相反的方式,例如12ab,12将其作为输入值.我怎么能防止这种情况?

c++ cin visual-c++

0
推荐指数
1
解决办法
800
查看次数

为什么选择GetLocalTime(&sys); 显示奇怪的结果?

我想实时获取当地时间.代码和结果如下,显示奇怪;

int main() {
    while (true) {
        char sentdata[64] = { 0 };
        GetLocalTime(&sys);
        sprintf(sentdata, "A,%02d:%02d:%02d.%03d,B\n", sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds);

        cout << sentdata << endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我在其他PC上尝试了相同的代码,结果显示如下,它可以显示每毫秒.

在此输入图像描述

为什么tmie在某个循环中是相同的?我认为每个循环的时间应该不同.

c++ time winapi

0
推荐指数
1
解决办法
90
查看次数

确定文件HANDLE是否为管道句柄

在一个特定的函数中,我收到一个文件HANDLE,我想检查这个文件句柄是否是真正的磁盘文件句柄而不是管道句柄.保证它可以是磁盘文件句柄,也可以是管道句柄而不是任何其他类型的句柄.

我该怎么做?

void ProcessHandle(HANDLE hFile)
{
       // Process only if disk file handle
}
Run Code Online (Sandbox Code Playgroud)

函数GetFileInformationByHandle将检索文件句柄信息,如果句柄是管道句柄,则会失败,如下所述:

此句柄不应是管道句柄.

但是,它需要一个大型结构(BY_HANDLE_FILE_INFORMATION)并填充信息.我不是在寻找这些详细信息,因此使用此功能会带来性能损失.

c c++ windows winapi handle

0
推荐指数
1
解决办法
395
查看次数

声明,然后定义一个类方法 - 为什么会出错?

为什么不编译?

class Test
{
    void foo();
    void foo()
    { }
};
Run Code Online (Sandbox Code Playgroud)

但这些将编译:

void bar();
void bar()
{ }

// In same header/file
class Test
{
    void foo();   
};
void Test::foo()
{ }
Run Code Online (Sandbox Code Playgroud)

编译器会说给定的方法不能重载.该方法Test::foo没有被重载 - 它具有完全相同签名的相同功能.

c++

0
推荐指数
1
解决办法
70
查看次数

编译c ++到汇编会提高性能吗?

我想在网站上发布一个问题,而我的问题完全适合规则错误

这是我的问题(是否有可能将c ++代码转换为汇编或机器代码以获得性能?我知道更低级别的语言在硬件上运行更快,因为直接访问硬件,而更高级别的语言需要编译,所以我的想法是编译c ++代码一次并保存并运行编译版本是否实用?我听说它需要1-1编译器这样的东西存在吗?)

c++ assembly

-2
推荐指数
1
解决办法
181
查看次数

标签 统计

c++ ×7

visual-c++ ×2

winapi ×2

assembly ×1

c ×1

c++14 ×1

cin ×1

handle ×1

hash ×1

mfc ×1

time ×1

windows ×1