大家好我不熟悉C ++中的地图我有一个关于将特定类型地图复制到另一个同类地图的问题,详细信息如下所示 我最初声明了这样的地图
map<string,int> objmap,obj_porcess ;
for(int i = 0; i < 10; i++) {
objmap ["process"+to_string(i)]=i+10//some processing the to_string is just in case but i have strings with names for all 10 values
}
像
objmap["process_today"]=1;
objmap["process_yesterday"]=-1;
objmap["process_tommorow"]=2;
现在我想定义一些这样的东西,只是我的关键词应该添加进程,剩下的所有键都可以与obj_process的所有键相同
obj_process["today"]=objmap["process_today"] ;
而不是定义所有10我可以有一个简单的代码原因在这里我采取了10的例子,但我有200套不同的字符串在地图的键 我已经问了一个qn与this was my previous qn完全相反的现在,当我尝试反之亦然时我有一个问题希望我找到一些帮助
答案 0 :(得分:0)
如果您可以同时初始化两者,解决方案很简单:
const std::vector<std::string> days = {"today", "yesterday", /*...*/};
for(const auto& d : days)
{
objmap["process_" + d] = foo();
obj_process[d] = foo();
}
如果你不能,你应该能够迭代objmap
并通过一些基本的字符串操作摆脱"process_"
前缀:
constexpr auto prefix_length = 8; // length of "process_"
for (const auto& p : objmap)
{
const auto& key = p.first;
const auto& processed_key = key.substr(prefix_length);
obj_process[processed_key] = objmap[key];
}