将指针回推为向量
Pushing back a pointer into a vector c++
这是使用vector来存储从同一个父类继承的不同对象c++的后续,但是你不需要阅读它来理解。
有一个多项式类和另一个容器类。在容器类中有一个vector,用于保存指向多项式的指针。我这样定义了vectorPolynomial:
std::vector<std::unique_ptr<Polynomial>> vectorPolynomial;
在多项式类中有一个二元运算符,该运算符接受两个多项式并返回本身为多项式的结果。
在多态性之前,操作符返回一个多项式类型的对象,我只是这样做:
Polynomial polynomialresult = polynomial1 % polynomial2;
vectorPolynomial.push_back(polynomialresult);
既然这个向量不再是多项式向量,这就行不通了。下面是我的尝试:
std::unique_ptr<Polynomial> result(new Polynomial);
*result = *(vectorPolynomial[i]) % *(vectorPolynomial[j]);
vectorPolynomial.emplace_back(result);
这不起作用。我也试过:
Polynomial * result = new Polynomial;
而不是unique_ptr,但它也不起作用。Push_back代替emplace_back也不起作用
这通常是怎么做的?
unique_ptr
没有复制构造函数。所以你需要移动它:
vectorPolynomial.emplace_back(std::move(result));
虽然Benjamin对您的代码的修改有效,但我觉得它有点落后。毕竟,unique_ptr
没有复制构造函数是有原因的;您的代码可以从使用普通对象而不是指针中获益:
Polynomial polynomialresult = *vectorPolynomial[i] % *vectorPolynomial[j];
vectorPolynomial.emplace_back(new Polynomial(polynomialresult));
在这里,我们只在实际需要时才手动分配内存,而不是更早。
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 使用向量类的c++指针
- 如何使用C++初始化向量;脚本化值不是数组、指针或矢量错误
- 如何更改唯一指针向量的可见性
- C++ 独特指针练习的向量
- C 中的向量指针的清晰图
- 当向量位于内部类中时,如何删除指向对象的向量指针
- std::向量指针
- 指向结构体的向量指针错误
- 删除指向指针的向量指针时出错
- 映射不同类型的向量指针
- 在c++中传递向量指针
- 虚拟类的向量:指针是干净的方法吗
- 如何从另一个向量/对象集构造新的向量/指针集
- 模型视图控制器- c++向量指针,太多的传递
- 为什么向量指针占用这么多内存?
- 删除条目向量指针的静态映射c++
- 复向量指针
- c++数组向量指针的初始化