uint64_t imsi = sp_user_info->GetIMSI(); if(common.eci == 0) { common.eci = sp_user_info->GetEci(); }
时间: 2024-04-01 22:34:57 浏览: 25
这段代码是 C++ 语言中的一段程序,包含了两行语句。第一行语句定义了一个 uint64_t 类型的变量 imsi,并将其赋值为 sp_user_info 指针所指向的对象的 IMSI 值。第二行语句使用 if 语句判断 common 结构体变量中的 eci 是否为 0,如果是,则调用 sp_user_info 指针所指向的对象的 GetEci() 函数获取 ECI 值,并将其赋值给 common 结构体变量的 eci 成员变量。这段代码的作用是获取当前用户的 IMSI 值和 ECI 值,并将 ECI 值存储到 common 结构体变量中。
相关问题
void S1mmeSession::UpdateKqiInfo(S1APNode* p_node) { MsgCommonInfo& common = p_node->GetCommonInfo(); SPUserInfo& sp_user_info = p_node->GetUserInfo(); uint64_t imsi = sp_user_info->GetIMSI(); uint64_t imei = common.imei; uint32_t eci = common.eci == 0 ? sp_user_info->GetEci() : common.eci; uint16_t tac = common.tac; uint64_t last_time = current_time_.tv_sec; //IMSI_T imsi_key(imsi); //IMSI_Iter iter = ue_imsi_map_.find(imsi_key); //LogInfo("%d",common.imei); KqiValue& kqi_value = kqi_map_[imsi]; auto it = kqi_map_.find(imsi); if (it != kqi_map_.end()) { // 如果imsi已存在,则更新其value kqi_value.imsi = imsi; kqi_value.imei = imei; kqi_value.eci = eci; kqi_value.tac = tac; clock_gettime(CLOCK_REALTIME, &kqi_value.last_time); } LogInfo("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!!!!!!"); return; }添加代码,如果imsi不存在就正常添加
可以在`if (it != kqi_map_.end())`语句块之前添加如下代码:
```cpp
if (it == kqi_map_.end()) {
// 如果imsi不存在,则创建一个新的KqiValue对象并插入map中
KqiValue kqi_value_new;
kqi_value_new.imsi = imsi;
kqi_value_new.imei = imei;
kqi_value_new.eci = eci;
kqi_value_new.tac = tac;
clock_gettime(CLOCK_REALTIME, &kqi_value_new.last_time);
kqi_map_.insert({imsi, kqi_value_new});
return;
}
```
这样就可以在`imsi`不存在时创建一个新的`KqiValue`对象并将其插入到`kqi_map_`中。完整的函数代码如下:
```cpp
void S1mmeSession::UpdateKqiInfo(S1APNode* p_node) {
MsgCommonInfo& common = p_node->GetCommonInfo();
SPUserInfo& sp_user_info = p_node->GetUserInfo();
uint64_t imsi = sp_user_info->GetIMSI();
uint64_t imei = common.imei;
uint32_t eci = common.eci == 0 ? sp_user_info->GetEci() : common.eci;
uint16_t tac = common.tac;
uint64_t last_time = current_time_.tv_sec;
KqiValue& kqi_value = kqi_map_[imsi];
auto it = kqi_map_.find(imsi);
if (it == kqi_map_.end()) {
// 如果imsi不存在,则创建一个新的KqiValue对象并插入map中
KqiValue kqi_value_new;
kqi_value_new.imsi = imsi;
kqi_value_new.imei = imei;
kqi_value_new.eci = eci;
kqi_value_new.tac = tac;
clock_gettime(CLOCK_REALTIME, &kqi_value_new.last_time);
kqi_map_.insert({imsi, kqi_value_new});
return;
}
// 如果imsi已存在,则更新其value
kqi_value.imsi = imsi;
kqi_value.imei = imei;
kqi_value.eci = eci;
kqi_value.tac = tac;
clock_gettime(CLOCK_REALTIME, &kqi_value.last_time);
return;
}
```
MsgCommonInfo& common = p_node->GetCommonInfo(); SPUserInfo& sp_user_info = p_node->GetUserInfo(); uint64_t imsi = sp_user_info->GetIMSI(); if(common.eci == 0) { common.eci = sp_user_info->GetEci(); } uint16_t tmp_enbid = common.tac; uint64_t imei = common.imei;请根据以上信息用C++现一个函数,要求维护一组key、value的关系。 key:imsi value:imsi、imei、common.eci、common.tac、last_time 要求,imsi相同时,以最后一条记录的value内容为准进行保存
可以使用std::unordered_map来维护key-value的关系,代码如下:
```c++
#include <unordered_map>
#include <chrono>
struct Record {
uint64_t imsi;
uint64_t imei;
uint64_t eci;
uint16_t tac;
std::chrono::system_clock::time_point last_time;
};
std::unordered_map<uint64_t, Record> records;
void updateRecord(uint64_t imsi, uint64_t imei, uint64_t eci, uint16_t tac) {
auto now = std::chrono::system_clock::now();
records[imsi] = {imsi, imei, eci, tac, now};
}
```
在以上的代码中,我们定义了一个struct Record来保存imsi、imei、eci、tac和最后更新时间。然后我们使用std::unordered_map来保存imsi和对应的Record。当需要更新某个imsi的记录时,直接调用updateRecord函数即可。如果这个imsi已经存在了,那么会直接覆盖之前的记录,保存最新的信息。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)