小编use*_*438的帖子

为什么这些C++ STL无序集合被认为是相同的?

我期望下面的两个无序集合被评估为等价,但令我惊讶的是它们不是.发生这种情况是因为两个字符串存储在同一个哈希桶中,而运算符==对集合中的项目进行顺序比较.这应该被视为std :: unordered_set中的错误吗?有人有一个优雅的解决方法吗?

std::unordered_set<std::string> a,b;
a.insert("500666");
a.insert("961021");
b.insert("961021");
b.insert("500666");

if (a == b)   // condition is evaulated as false
{   
}
Run Code Online (Sandbox Code Playgroud)

c++ std visual-studio-2010 visual-c++ unordered

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

使用sprintf和%g将double转换为string的意外结果

当我使用MBCS和msvcr120.dll(12.0.40660.0)时,使用%g和sprintf将double转换为字符串时会出现意外结果.%g的文档说默认精度为6.为什么我看到下面的结果?

{
    double d = 1234567.00;
    char buf[100];

    sprintf_s(buf, sizeof(buf), "%g", d);

    //result is 1.23457e+006
}
Run Code Online (Sandbox Code Playgroud)

为什么结果1.23457e+006而不是1.23456e+006?截断是否发生在6位数之后?

c++ printf

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

标签 统计

c++ ×2

printf ×1

std ×1

unordered ×1

visual-c++ ×1

visual-studio-2010 ×1