首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >p0083中“高效的元素工厂”的目的

p0083中“高效的元素工厂”的目的
EN

Stack Overflow用户
提问于 2017-03-29 18:40:33
回答 1查看 63关注 0票数 1

建议书显示了对map的奇怪使用:

这使得像元素工厂这样非常有效的事情成为可能。

代码语言:javascript
运行
复制
auto new_record()
{
  table_type table;
  table.emplace(...); // Create a record with some parameters.
  return table.extract(table.begin());
}
table.insert(new_record());

假设记录是可移动的(因此从函数返回记录不是很昂贵),这段代码有什么意义吗?

EN

回答 1

Stack Overflow用户

发布于 2017-03-29 18:45:04

这只是一个例子,展示了如何创建一个元素并在不复制(或移动)的情况下返回它,它并不意味着是生产代码在做一些真实的事情。

如果您看不到示例的意义,那么假设table不是局部变量,而是可能已经包含了一些值的全局变量:

代码语言:javascript
运行
复制
table_type table;
auto insert_record_and_take_first(const Foo& foo, const Bar& bar, const Baz& baz)
{

  table.emplace(foo, bar, baz); // Create a record with some parameters.
  return table.extract(table.begin()); // Remove first 
}
table.insert(insert_record_and_take_first());

如果记录类型不能移动,这是不可能的。即使它是可移动的,这样做也可能更有效率。

假设记录是可移动的(因此从函数返回记录不是很昂贵),这段代码有什么意义吗?

pair<const X, Y>是可移动的吗?你怎么从康斯特的钥匙上移动?

当您只能将const迭代器转移到元素时,如何从std::set元素移动?

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

https://stackoverflow.com/questions/43101609

复制
相关文章

相似问题

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