C++11 使用唯一类型键将地图插入其他地图 你好,我是C++中的新手,我有一个关于复制一个特定类型地图到另一个相同类型地图的问题,下面详细介绍 我最初声明了一张这样的地图 map<string,int> objmap,obj_porcess ; for(int i = 0; i < 10]; i++) { obj_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 }

C++11 使用唯一类型键将地图插入其他地图 你好,我是C++中的新手,我有一个关于复制一个特定类型地图到另一个相同类型地图的问题,下面详细介绍 我最初声明了一张这样的地图 map<string,int> objmap,obj_porcess ; for(int i = 0; i < 10]; i++) { obj_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 },c++11,C++11,现在我想定义一些类似的东西,只是我的关键字应该与流程一起添加,并且对于obj_流程中的所有关键字,剩余的所有关键字都可以相同 objmap["process_"+"today"] = obj_process["today"]; 我可以用一个简单的代码来代替定义所有的10吗?因为在这里我举了一个10的例子,但是我在map的键中有200组不同的字符串你能在map上迭代一下吗 for(自动和输入:obj_过程) objmap[“进程”+i.first]=i.second我想这就是您需要的: map&

现在我想定义一些类似的东西,只是我的关键字应该与流程一起添加,并且对于obj_流程中的所有关键字,剩余的所有关键字都可以相同

objmap["process_"+"today"] = obj_process["today"];

我可以用一个简单的代码来代替定义所有的10吗?因为在这里我举了一个10的例子,但是我在map的键中有200组不同的字符串

你能在map上迭代一下吗

for(自动和输入:obj_过程)

objmap[“进程”+i.first]=i.second

我想这就是您需要的:

map<string,int> objmap;
map<string,int> obj_porcess;

//
// Fill up the contents of obj_porcess
//

// Copy objects from obj_porcess to objmap using a computed key.    
for ( auto& item : obj_process )
{
    objmap[std::string("process_") + item.first] = item.second;
}
map-objmap;
映射对象过程;
//
//填写obj_程序的内容
//
//使用计算密钥将对象从obj_进程复制到objmap。
用于(自动和项目:obj_流程)
{
objmap[std::string(“进程”)+item.first]=item.second;
}

这行不通,你没有连接字符串,你在添加指针和数字。我很确定这是
std::string(“process”)+i.first
“process”+to_string(i.first)
我很确定你应该在任何评论之前询问编译器。新的
std::string
是从
const char*
隐式构建的
to_string(i.first)
对我来说没有任何意义。我的缺点是,我一直认为i.first是整数,很抱歉,如果你正在使用(引号),我只想通知“process+”它以字符串的形式告诉类型,谢谢idea@SakethPothukuchi,是的,我意识到了这一点。我更喜欢使用显式类型作为编码样式。这样的代码对我来说更容易理解。
map<string,int> objmap;
map<string,int> obj_porcess;

//
// Fill up the contents of obj_porcess
//

// Copy objects from obj_porcess to objmap using a computed key.    
for ( auto& item : obj_process )
{
    objmap[std::string("process_") + item.first] = item.second;
}