数算 MOOC 的思考题:STL 为什么把 pop 和 top 分开?
- pop 如果有返回值的话,显然不能返回一个引用。如果是值的话,就不是很高效了——它会产生至少一次多余的构造函数调用。
- 如果
std::stack<T>
是一个模板类, pop 返回的结果需要调用复制构造函数。如果这个构造函数内部足够复杂,甚至出发了异常,那么这里面的 pop 的返回值就是一个 rvalue…… 在过程中就丢失了…… 并没有办法找回
你是我不愿醒来的梦啊
真是柔情一场
数算 MOOC 的思考题:STL 为什么把 pop 和 top 分开?
std::stack<T>
是一个模板类, pop 返回的结果需要调用复制构造函数。如果这个构造函数内部足够复杂,甚至出发了异常,那么这里面的 pop 的返回值就是一个 rvalue…… 在过程中就丢失了…… 并没有办法找回