- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<分区>
我在 Visual C++ 16.0(Visual Studio 2010 附带的那个)中尝试了各种实现,但我遇到了 std::unordered_map
的各种错误。
例如
CKey key = pszName;
auto it = m_Records.find(key);
if (it != m_Records.end())
{
// we replace existing item (so delete old)
delete it->second;
it->second = pRecord;
}
else
{
const size_t sz = m_Records.size();
m_Records.insert(std::make_pair(key, pRecord));
const size_t sz2 = m_Records.size();
assert((sz + 1) == sz2); // this assertion fails! wtf!
}
m_Records
是一个 std::unordered_map 实例。所以我切换到boost::unordered_map
1.48.现在这确实有效,但我在其他地方遇到了另一个问题。虽然上面的代码相同,但相同的 key 不断被插入两次或更多次。为什么我的 map 无法管理最简单的事情并且每个键只保留一个条目?
我已经三次检查哈希函数和比较函数。我不认为他们应该为此负责。
我做错了什么?
m_Records
的类型是 boost::unordered_map<CKey, CRecord*>
或 std::unordered_map<CKey, CRecord*>
.
CKey
定义如下:
struct CKey
{
const wchar_t* m_Str;
int m_Len;
CKey(const wchar_t* s)
: m_Str(s)
, m_Len(s ? (int)wcslen(s) : 0)
{
}
size_t hash() const
{
if (this->m_Len > 0)
{
char temp[16];
memset(temp, 0, sizeof(temp));
MurmurHash3_x64_128(this->m_Str, (int)sizeof(wchar_t) * this->m_Len, 0, temp);
size_t hash = *(size_t*)temp;
return hash;
}
return 0;
}
bool operator==(const CKey& other) const
{
if ((this->m_Len > 0) & (this->m_Len == other.m_Len))
{
return (wcscmp(this->m_Str, other.m_Str) == 0);
}
// otherwise, they are only equal if they are both empty
return (this->m_Len == 0) & (other.m_Len == 0);
}
};
namespace boost
{
template <>
struct hash<CKey>
{
size_t operator()(const CKey& k) const
{
return k.hash();
}
};
}
namespace std
{
template <>
struct equal_to<CKey>
{
bool operator()(const CKey& x, const CKey& y) const
{
return (x == y);
}
};
}
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!