只是想整理一个程序,想知道是否有人可以给我一些关于在同一行上多次调用一个队列上的成员函数的语法糖。
例如,改变:
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
,因为队列将在 2 次 push 之后包含 0
和 1
。
关于c++ - 有没有办法用一行在同一个对象上调用多个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39838716/