两个成员当然不如一个成员好。
optional<int>开销等同于一个bool加一个int,可读性强上几条街
【 在 Bernstein (Berns) 的大作中提到: 】
: 标 题: Re: std::optional这个性能开销如何?
: 发信站: 水木社区 (Wed Aug 26 21:27:36 2020), 站内
:
: 感觉这个方案考虑得太多
: 如果只是一个简单的int,直接一个bool,一个int两个成员,解决问题
: 如果有其它复杂情况的话,另说;但要是用得不太频繁的话,用什么都没有太大问题,性能开销主要针对使用频繁的情形考虑
:
: 【 在 howry 的大作中提到: 】
: : 比如一个类里面有一个 int *a,某个成员函数需要先判断a是否为nullptr,如果是,则new int一下,然后赋值。另一个成员函数要用到这个a,先判断是否有值,然后有就用,用完了会delete a; 且设置a=nullptr。如此反复。感觉这种方式会不断申请很小的内存,又释放。
: : 而现在有了std::optional之后,可以直接std::optional<int> a; 没有值时设置为nullopt,有值时进行直接赋值,用完了又置为nullopt。
: : 那么以上两种方式,怎么判断其性能开销呢?用optional肯定更方便
:
: --
: 蜗牛角里争何事
: 石火光中寄此身
:
:
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 221.218.208.*]
--
FROM 76.126.252.*