映射的迭代器不保存正确的值
The iterator of a map doesn't hold the correct value
我有以下功能:
void send_sequence_to_device( std::map<const string_t,device_t*> &msg2device_p, std::vector<response_t>& result_list, ushort num_attempts)
{
cout<<"sarit enter to send_seq_device"<<endl;
std::map<const string_t, device_t*>::iterator msg_itf;
for( msg_itf=msg2device_p.begin(); msg_itf!=msg2device_p.end(); msg_itf++ )
{
cout<<"sarit enter to seq"<<msg_itf->first<<endl;
}
}
我用另一个函数调用这个函数:
void node_layer_manager_t::ts_clk_est_job_function(void)
{
vector<response_t> res;
map<const string_t, device_t*> setRegMsg={{"trx_set_jr_estim_fs_to_cnt "+NUM_FRAMES_TO_COUNT_IN_TS_CLK_EST,&trx},{"trx_set_jr_estim_fs_to_cnt "+NUM_FRAMES_TO_COUNT_IN_TS_CLK_EST,&trx}}, getRegMsg={{"trx_get_jr_estim_params",&trx},{"trx_get_jr_estim_params",&trx}};
cout<< "sarit ts clk function nlm first"<<endl;
send_sequence_to_device(setRegMsg,res);
}
NUM_FRAMES_TO_COUNT_IN_TS_CLK=3(定义)
例如,由于某些原因,对于第一对{"trx_set_jr_estim_fs_to_cnt "+NUM_FRAMES_TO_COUNT_IN_TS_CLK_EST,&trx}
,send_sequence_to_device
函数只打印它应该打印的部分。"estim_fs_to_cnt"而不是"trx_set_jr_estim_fs_to-cnt 5"
问题在于您试图将字符串与整数连接的方式:
"trx_set_jr_estim_fs_to_cnt " + 1
不变成"trx_set_jr_estim_fs_to_cnt 1"
,而是变成"rx_set_jr_estim_fs_to_cnt "
之所以会发生这种情况,是因为在c和c++中,字符串文字默认为类型const char*
,并且当您向指针添加数字时,指针将按此值递增。
您可以使用字符串流:
std::stringstream ss;
ss << "trx_set_jr_estim_fs_to_cnt " << NUM_FRAMES_TO_COUNT_IN_TS_CLK_EST;
map<const string_t, device_t*> setRegMsg={{ss.str(),&trx},[...]
相关文章:
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 映射迭代器与运算符不匹配
- 使用迭代器替换映射中的常量项的方法
- 映射中循环的迭代器
- std::使用迭代器映射查找距离,程序不会终止
- 创建以向量/列表迭代器为键的映射
- 我可以将映射迭代器与 OpenMP 并行使用吗?
- c++ 在循环中删除迭代器(映射的映射)
- std::map 擦除 - 将迭代器传递给错误的映射
- BAD_ACCES映射 C++ 上的迭代器
- 映射/集迭代器不可取消引用 (C++) - 调试断言失败
- 取消引用映射迭代器时返回对临时的引用
- 来自并发哈希映射的迭代器是否安全
- 为什么映射迭代器显示基本操作数无效错误
- C++有关映射和迭代器的错误
- 复制映射迭代器对值的省略
- ->第一个/第二个到空映射迭代器开始
- 将迭代器映射到特定字段上的迭代器(可以使用 Boost)
- c++如何将迭代器映射的集合作为键
- 有没有一种方法可以将迭代器映射到它的容器