首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以优美的方式复制矢量到STL中的地图

如何以优美的方式复制矢量到STL中的地图
EN

Stack Overflow用户
提问于 2014-04-24 03:32:54
回答 1查看 4.9K关注 0票数 6

目前,我在向量中有一些数据。目前,我想把向量转换成地图。

因此,它将被组织如下(N是偶数)。

矢量:要素1、要素2、要素3、要素4.元素N.

地图: key1:元素1,value1:元素2,key2:元素3 value2: element 4.

目前,我只是列举向量,有没有其他优雅的方法来做它。C++11是首选。谢谢。

代码语言:javascript
运行
复制
for (int x = 0; x < vec.size(); )
{
    map[vec[x]] = vec[x+1];
    x+=2;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-24 04:14:54

您的代码可以工作(注意到Michael的建议,如果有奇数,不要处理最后一个元素)。

还有一个小小的改进可以做。调用map[vec[x]]使用value_type的默认构造函数构造一个条目,然后复制赋值操作符从vec[x+1]复制值。

您可以通过执行以下操作来避免复制分配步骤:

代码语言:javascript
运行
复制
the_map.insert( std::make_pair(vec[x], vec[x+1]) );

我认为这最终会有地图条目的副本-从这对。在C++11中,您可以这样做:

代码语言:javascript
运行
复制
the_map.emplace(vec[x], vec[x+1]);

它允许编译器将复制完成的数量降到最低。如果您的对象支持移动语义,并且希望在之后销毁该向量,则甚至可以:

代码语言:javascript
运行
复制
the_map.emplace( std::move(vec[x]), std::move(vec[x+1]) );
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23259313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档