我在vc 2022上,选择c++20, emplace_back 不接受初始化列表。 只能:
m_records.emplace_back(
bar,
c,
price,
rec0.total_count + c,
rec0.total_cost + c * price * (1 + fee),
0,
rec0.cash - c * price * (1 + fee)
);
我的理解,使用初始化列表,是在调用emplace_back之前,就使用隐式转换构建对象,然后必然发生移动和拷贝。
而emplace就是为了避免这个,所以它直接接受一个可变长的参数列表,在内部构建对象,不发生移动和拷贝。
这时性能差异就明显了。
【 在 gfkid 的大作中提到: 】
: gpt4认为这个性能差异微不足道。
: 对于您的 `TradeRecord` 结构体,使用具名初始化和使用参数列表初始化的性能应该是非常接近的,因为在这两种情况下,涉及的操作基本相同。
: 1. **具名初始化**:
: ...................
--
FROM 223.72.40.*