只是想整理一个程序,想知道是否有人可以给我一些关于在同一行多次调用一个队列上的成员函数的语法糖。
例如,改变:
queue<int> q;
q.push(0);
q.push(1);
像这样的东西:
q.(push(0), push(1));
//or
q.push(0).push(1);
我知道这看起来有点可笑,而且不实用。但是,如果我想缩短一小部分这样的代码,有没有办法这样做?从我到目前为止所读到的内容来看,只有当函数具有非void
返回值。
当然,这是一个选择:
q.push(0); q.push(1);
但我试图避免q
那里两次。再次...语法糖:)
这里的目标不是初始化,而是压缩在代码块中调用对象/容器的次数。我引用队列的原因是因为它是动态的。
如果您有一个可以修改的类,请让该函数返回对其自身的引用:
template<typename T>
class queue {
public:
//...
queue& push(T data) {
//...
return *this; //return current instance
}
//...
private:
//...
};
然后你可以做
queue<int> q;
q.push(0).push(1);
如果你做不到,那么你的双手就被束缚了。您可以对类进行包装,但为了节省一些字符,这几乎不值得。
在你的情况下push
, 你可以做:
queue<int> q = { 0, 1 };
但这显然只适用于push
,因为队列将包含0
and 1
2次推动后。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)