建议书显示了对map的奇怪使用:
这使得像元素工厂这样非常有效的事情成为可能。
auto new_record()
{
table_type table;
table.emplace(...); // Create a record with some parameters.
return table.extract(table.begin());
}
table.insert(new_record());假设记录是可移动的(因此从函数返回记录不是很昂贵),这段代码有什么意义吗?
发布于 2017-03-29 18:45:04
这只是一个例子,展示了如何创建一个元素并在不复制(或移动)的情况下返回它,它并不意味着是生产代码在做一些真实的事情。
如果您看不到示例的意义,那么假设table不是局部变量,而是可能已经包含了一些值的全局变量:
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元素移动?
https://stackoverflow.com/questions/43101609
复制相似问题