目前,我在向量中有一些数据。目前,我想把向量转换成地图。
因此,它将被组织如下(N是偶数)。
矢量:要素1、要素2、要素3、要素4.元素N.
地图: key1:元素1,value1:元素2,key2:元素3 value2: element 4.
目前,我只是列举向量,有没有其他优雅的方法来做它。C++11是首选。谢谢。
for (int x = 0; x < vec.size(); )
{
map[vec[x]] = vec[x+1];
x+=2;
}
发布于 2014-04-24 04:14:54
您的代码可以工作(注意到Michael的建议,如果有奇数,不要处理最后一个元素)。
还有一个小小的改进可以做。调用map[vec[x]]
使用value_type
的默认构造函数构造一个条目,然后复制赋值操作符从vec[x+1]
复制值。
您可以通过执行以下操作来避免复制分配步骤:
the_map.insert( std::make_pair(vec[x], vec[x+1]) );
我认为这最终会有地图条目的副本-从这对。在C++11中,您可以这样做:
the_map.emplace(vec[x], vec[x+1]);
它允许编译器将复制完成的数量降到最低。如果您的对象支持移动语义,并且希望在之后销毁该向量,则甚至可以:
the_map.emplace( std::move(vec[x]), std::move(vec[x+1]) );
https://stackoverflow.com/questions/23259313
复制相似问题