首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::piecewise_construct语法是如何工作的?

std::piecewise_construct语法是如何工作的?
EN

Stack Overflow用户
提问于 2014-12-01 14:24:51
回答 2查看 3.4K关注 0票数 8

当与std::piecewise_construct一起使用时,我对std::map感到有点困惑。示例:

代码语言:javascript
复制
std::map<std::string, std::string> m;

// uses pair's piecewise constructor
m.emplace(std::piecewise_construct,
          std::forward_as_tuple("c"),
          std::forward_as_tuple(10, 'c'));

我不知道emplace()如何知道在使用piecewise_construct时如何以不同的方式处理这种类型的构造。应该是:std::piecewise_construct(std::forward_as_tuple("c"), std::forward_as_tuple(10, 'c'))?它是如何与逗号一起工作的,我没有看到重载的逗号运算符或特殊的过载emplace来处理分段的、然后可变的args (如这里所示)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-01 14:28:30

std::map::emplace直接调用构造函数,并将参数传递给emplace (转发它们)类型为std::map<std::string, std::string>::value_type (这是类型为std::map<std::string, std::string>::value_typestd::map<std::string, std::string>::value_type)。

)

票数 8
EN

Stack Overflow用户

发布于 2014-12-01 14:28:36

map::emplace只是将其参数传递给pair<const K, V>的构造函数。结对有一个构造函数重载,它使用piecewise_construct作为第一个参数。

参见http://en.cppreference.com/w/cpp/utility/pair/pair构造函数#6

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27230458

复制
相关文章

相似问题

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