我期望下面的两个无序集合被评估为等价,但令我惊讶的是它们不是.发生这种情况是因为两个字符串存储在同一个哈希桶中,而运算符==对集合中的项目进行顺序比较.这应该被视为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) 当我使用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位数之后?