gpt4 book ai didi

c++ - boost 0 的 unordered_map 键值

转载 作者:行者123 更新时间:2023-11-28 06:36:23 24 4
gpt4 key购买 nike

我正在使用 boost 1.56 并且有一个 unordered_map。当我如下插入零键值时:

boost::unordered_map<int, int> map;
for(int i=0; i < size; i++)
{
int value = another_array[j];
map.insert(i, value);
}

使用访问 map 时出现崩溃 map .at(0);

我已经通过查看 std::pairiterator, bool >

插入返回,bool为真,说明插入成功我正在创建本地到全局的编号映射,因此我的 key 都是 0:N-1。我知道 N,所以应该能够按如下方式循环 (count == 0:N-1):

for(int j=0; j < count; j++)
{
if(map.count(j))
printf("Value at index %d is %d\n", j, map.at(j));
}

但是 k 的计数为零。如果我不执行检查,我会收到越界错误。这怎么会发生?如果我切换到使用 1-N 作为键,则没有这样的问题。

顺便说一句,我确实意识到在这个例子中 map 有点矫枉过正,但我​​有我的理由。

请注意,我不能使用 std::unordered 映射,因为我们是跨平台的,我们的 linux 编译器目前不支持它。

最佳答案

编辑前:key_type 的哈希<>特化很可能被破坏。

你没有展示它,但据我所知,只有这种破坏不变的错误才能解释你描述的行为(在一个独立的最小示例中)。

编辑后:您应该创建一个独立的示例来为您显示错误,以便我们能够提出更好的诊断

关于c++ - boost 0 的 unordered_map 键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26712443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com