我有一门课,我们称之为多项式。
所需多项式的数量事先不知道,并在运行时确定。我目前的实现使用了一个容器类,我们称之为Solutions,其中有一个向量,我们称之为polynomialVector,它是这样定义的:
std::vector<Polynomial> polynomialVector;
向量以这种方式创建和填充(解决方案的构造函数执行此工作):
polynomialVector.reserve(numberofneededpolynomials);
for(int i = 0; i < numberofneededpolynomials ; i++) {
polynomialVector.emplace_back(0) //Polynomial constructor takes an int parameter
}
现在我想创建从通用多项式类继承的特定类型的多项式。多项式的类型将由用户在运行时确定。例如,如果用户输入 0,则使用通用多项式类,如果他输入 1,则使用特定派生多项式类,对于类型 2,使用不同特定类型的多项式等。
我在示例中看到这可以使用常规数组来完成:
Polynomial * polynomial1 = new DerivedPolynomial1(parameters);
Polynomial * polynomial2 = new DerivedPolynomial2(parameters);
Polynomial * arrayPolynomial[2] = {polynomial1, polynomial2};
但是我需要使用向量来完成它,因为应用程序创建了许多事先不知道的不同多项式(由多项式类随机创建,但这不相关)。我包装多项式类(解决方案类)的整个代码已经为向量编码。
我需要做这样的事情:
cin >> type;
if(type == 0) {
polynomialVector.reserve(numberofneededpolynomials);
for(int i = 0; i < numberofneededpolynomials ; i++) {
*create polynomial of type 0 in a similar way that emplace_back does for the general case that I described*
}
if(type == 1) {
... same thing but for type 1
}
这个怎么做?