关于GCC中Hash_map 编译错误(这个留着有待思考)

本文介绍了在32位Linux环境下使用GCC4.4.6编译含有64位整型hash_map的代码时遇到的编译错误,并给出了解决方案,即为hash_map模板特化提供64位类型的hash结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象:在32位Linux、Gcc 4.4.6 版中编译代码报这个错误:

/usr/lib/gcc/i686-redhat-linux/4.4.6/../../../../include/c++/4.4.6/backward/hashtable.h:590: error: no match for call to '(const __gnu_cxx::hash<long long unsigned int>) (const long long unsigned int&)'

使用到的代码:

#include <ext/hash_map>

hash_map<uint64_t, uint64_t> m_hmUseBuff;
bool CTimerBrd::Delete(void* dItem)
{
    // 元素有效性验证
    TimerItem* pItem = reinterpret_cast<TimerItem*> (dItem);

#ifdef USE_SPINLOCK
    pthread_spin_lock(&m_spinlock);
#else
    m_mutex.Lock();
#endif

    // 判断传入的handle是否已经被删除 或者位置错误
    if((NULL == dItem)
        || (pItem->uiPosition > MAXTIMERCNT)
        || (pItem->Checksum != (pItem->uiPosition ^ pItem->uiCycle)
        || (m_hmUseBuff.end() == m_hmUseBuff.find((uint64_t)dItem))))    
    {
        // 校验验证
        m_pOwner->m_stTimerStat.ulKillFail++;               //删除失败统计
    #ifdef USE_SPINLOCK
        pthread_spin_unlock(&m_spinlock);
    #else
        m_mutex.Unlock();
    #endif

        if (m_pOwner->m_stTimerStat.ulKillFail % 5000 == 1) //日志打印频率控制
        {
            LOGGER_ERROR(m_pLogger, " KillTimer时指定了无效的参数. Item = [" << dItem << "] 校验失败");
        }

    return false;
    }
...................................................

在代码中使用到了hash_map的一个查找find,。

解决方法:

在hash_map 中加入支持64位的类型结构体,就能编译通过, eg:(这是为什么呢??)

template<>
struct hash<long long int>
{
    size_t
    operator()(long long int _x) const
    {
        return _x;
    }
};

template<>
struct hash<unsigned long long int >
{
    size_t 
    operator()(unsigned long long int _x) const
    {
        return _x;
    }
};

 

转载于:https://my.oschina.net/panpanxiong/blog/60456

Whisper是一款可以实现语音识别转文字的应用软件。它可以通过下载安装在手机或电脑上,实现将语音转化为文字的功能。 使用Whisper进行语音识别转文字非常简便。首先,用户需要下载并安装Whisper应用,可以在各大应用商店或官方网站上获取。安装完成后,用户可以打开应用,并按照界面上的提示进行设置和授权。接下来,用户可以开始使用Whisper进行语音转文字的操作。 在使用Whisper进行语音识别转文字时,用户可以选择两种方式。一种是通过录制语音进行识别,用户只需按下录制按钮,开始说话,Whisper会自动将语音转化为文字。另一种方式是通过实时语音输入进行识别,用户可以直接讲话到麦克风,Whisper会实时将语音转为文字显示在屏幕上。 Whisper语音识别转文字功能非常准确和快速。它采用了先进的语音识别技术,能够准确地识别各种语音,并将其转化为文字。同时,Whisper还支持多国语言的识别,可以满足不同用户的需求。 通过Whisper进行语音识别转文字,用户可以享受到很多便利。无论是需要记录会议内容、学习笔记,还是进行语音交流的转化,Whisper都能够帮助用户快速准确地将语音转化为文字,并保存在手机或电脑上。这样,用户可以方便地进行查看、编辑和分享。 总之,Whisper是一个功能强大、操作简便的语音识别转文字应用软件,通过下载安装,用户可以随时随地将语音转化为文字,提高工作和学习的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值