如何构造初始化器和deque

how to struct initializer and deque

本文关键字:deque 初始化 何构造      更新时间:2023-10-16

所以我有。。

struct Polynomial{
    deque<long> coefs;
    long degree;
    Polynomial(initializer_list<long> co_list);
    Polynomial(deque<long> & co_list);
    Polynomial();
    string poly_to_string();
    Polynomial add(Polynomial rhs);
    Polynomial mult(Polynomial rhs);
    Polynomial mult(long factor);
}

对于这些方法,我必须:

多项式(initializer_list cfs)。使用系数的初始值设定项列表初始化实例。-顺序是最高的先出,最低的后出-coes和学位更新。

多项式(deque cfs)。使用系数向量初始化实例-顺序是最高的先出,最低的后出-coes和学位更新。

然后我做了一些方法来添加/倍数/因子多项式,我可以这样做,只是不确定是什么

Polynomial(initializer_list<long> co_list);
Polynomial(deque<long> & co_list);

他们应该做/如何启动它们。。

此外,我该如何启动函数以返回多项式°返回一个长值?

这两个函数是该类型的构造函数。它们告诉编译器如何设置Polynomial对象,以便为调用成员做好准备。它们最容易被理解为:

struct Polynomial{
    deque<long> coefs;
    long degree;
    Polynomial(initializer_list<long> co_list);
    Polynomial(deque<long> & co_list);
};
Polynomial::Polynomial(initializer_list<long> co_list) 
{
    //at this point, the members are created, but have no values
    //so we assign values to the members
    coefs.assign(co_list.begin(), co_list.end());
    degree = co_list.size();
}  
int main() 
{
    Polynomial mypoly = {3, 4, 5}; 
    //creates a Polynomial variable from an initializer list
    //the compiler runs the constructor function automatically
    //so now it's members are all properly set, and we can run other functions
    mypoly.do_thing();
}

但是,如上所示,Polynomial构造函数构造这两个成员,然后执行为它们赋值的函数。我们可以通过直接使用预期值构建它们来做得更好:

Polynomial::Polynomial(initializer_list<long> co_list) 
    :
    coefs(co_list.begin(), co_list.end()), //constructed directly
    degree(co_list.size())
{
    //they already have the needed values, don't need to do anything more
    //to finalize the construction
}