一个烂活,违规紫衫。
可以将对于一个或几个有关联的对象的操作连到一起(有点类似 cin/cout 在一个语句中的传递)。
需要使用面向对象风格的代码。
多进行赋值操作的封装,少使用取值操作的封装。
每个函数返回被操作对象指针,从而把许多语句连起来。
举例:
P3373 【模板】线段树 2 这道题线段树的 pushdown 函数:
inline void pushdown(Node *now) {
if (now->l != now->r) now->ls->setVal(now->ls->val * now->mul + now->add * (now->ls->r - now->l + 1))->fa->rs->setVal(now->rs->val * now->mul + now->add * (now->r - now->rs->l + 1))->fa->ls->setAdd(now->ls->add * now->mul + now->add)->setMul(now->ls->mul * now->mul)->fa->rs->setAdd(now->rs->add * now->mul + now->add)->setMul(now->rs->mul * now->mul)->fa->ls->maintain()->fa->rs->maintain()->fa->setAdd(0)->setMul(1);
}
完整代码 (其中只有 pushdown 用了这种奇怪的码风,其它的功能没改)
缺点:
优点: