码咔吧咔 2022-08-10 16:16 采纳率: 100%
浏览 44
已结题

gb28181场景中,map用法分析,对其进行代码注释说明

帮忙分析一下这句代码的含义感谢诸君
std::map<int, GB28181_MEDIA_PARA>::iterator iter=media_list.begin();//写明注释

这是map的使用方法(有些搞不懂)
使用map得包含map类所在的头文件
#include <map>  //注意,STL头文件没有扩展名.h
map对象是模板类,需要关键字和存储对象两个模板参数:
std:map<int,string> personnel;
这样就定义了一个用int作为索引,并拥有相关联的指向string的指针.
为了使用方便,可以对模板类进行一下类型定义,
typedef map<int,CString> UDT_MAP_INT_CSTRING;
UDT_MAP_INT_CSTRING enumMap;

这是问题代码节选部分(应用于gb28181中,关键点map的解析有不理解)

case EXOSIP_CALL_CLOSED:/*BEY此呼叫已收到再见结束会话*/
            {
                /*实时视音频点播*/
                /*历史视音频回放*/
                /*视音频文件下载*/
                dbg("<EXOSIP_CALL_CLOSED>\n");            //日志输出会话关闭
                if(MSG_IS_BYE(g_event->request))        //如果测试消息是再见请求
                {
                    dbg("<MSG_IS_BYE>\n");                //日志输出消息请求是BYE
                    //if((0 != g_did_realPlay)&&(g_did_realPlay == g_event->did))/*实时视音频点播*/
                    {
                        /*关闭:实时视音频点播/历史视音频回放/视音频文件下载*/
                        //dbg("realPlay closed success!\n");
                        //g_did_realPlay = 0;
                        pthread_mutex_lock(&media_list_mutex);//阻塞式加锁(傻等(一直盯着看的)加锁类型)心跳互斥锁
                        GB28181_MEDIA_PARA media_info;  //媒体段落结构体指针
                        std::map<int, GB28181_MEDIA_PARA>::iterator iter=media_list.begin();//**???这段代码啥意思???
                        for(;iter!=media_list.end();){
                            if(iter->first == g_event->did){
                                memcpy(&media_info,&iter->second,sizeof(GB28181_MEDIA_PARA));
                                media_list.erase(iter);
                                break;
                            }
                            else{
                                iter ++;
                            }
                        }
                        if(iter != media_list.end()){
                            strcpy(media_info.control_type,"Closed");
                            set_media_control(&media_info);
                            //usleep(500000);
                            st_eXosip_callback.st_exosip_media_control(&media_info);//获取当前媒体控制状态
                        }
                        pthread_mutex_unlock(&media_list_mutex);
                        //eXosip_lock(context);
                        eXosip_message_build_answer(context,g_event->tid, 200, &g_answer);/*Build default Answer for request*/
                        eXosip_message_send_answer(context,g_event->tid, 200, g_answer);/*按照规则回复200OK*/
                        dbg("eXosip_message_send_answer success!\n");
                        //eXosip_unlock(context);
                    }

  • 写回答

1条回答 默认 最新

  • 码咔吧咔 2022-08-10 16:18
    关注

    std::map<int, GB28181_MEDIA_PARA>::iterator iter=media_list.begin();这句话的注释分析,感谢诸君

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月18日
  • 已采纳回答 8月10日
  • 创建了问题 8月10日

悬赏问题

  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持