- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在尝试制作一个多项式类,我已经完成了将近一半。但是,我的 vector 在“多项式 q(coeff, expo);”之后一直重置为 0,谁能告诉我为什么?
class polynomial {
public:
polynomial();
polynomial(vector<float> coefficient, vector<int> degree);
friend ostream& operator<<(ostream& os, const polynomial& y);
private:
vector<float> coeff1;
vector<int> expo1;
};
polynomial::polynomial(){
coeff1.clear();
expo1.clear();
coeff1.push_back(1);
}
polynomial::polynomial(vector<float> coefficient, vector<int> degree){
if (coefficient.size() != degree.size()){
cout << "Error. The number of coefficients are not the same as the number of exponents. Polynomial will be set to 1." << endl;
polynomial();
}
else {
for (int b = 0; b<degree.size(); b++) {
for (int c = 0; c<b; c++){
if (degree[b] > degree[c]){
int holder = degree[b];
degree[b] = degree[c];
degree[c] = holder;
float holder1 = coefficient[b];
coefficient[b] = coefficient[c];
coefficient[c] = holder1;
}
}
}
for (int a = 0; a<coefficient.size(); a++) {
coeff1.push_back (coefficient[a]);
expo1.push_back (degree[a]);
}
}
}
ostream& operator<<(ostream& os, const polynomial& y){
if (y.coeff1.size() != y.expo1.size()) {
os << 1;
return os;
}
else {
for (int x = 0; x<y.coeff1.size(); x++){
if (y.coeff1[x] != y.coeff1[y.coeff1.size() - 1]) {
if (y.expo1[x] == 1){
os << y.coeff1[x] << "x" << " + ";
}
else if(y.expo1[x] == 0) {
os << y.coeff1[x];
}
else {
os << y.coeff1[x] << "x^" << y.expo1[x] << " + ";
}
}
else {
if (y.expo1[x] == 1){
os << y.coeff1[x] << "x";
}
else if(y.expo1[x] == 0) {
os << y.coeff1[x];
}
}
}
return os;
}
}
int main()
{
vector<float> coeff;
vector<int> expo;
coeff.push_back(3);
coeff.push_back(16);
coeff.push_back(10);
// coeff.push_back(7);
expo.push_back(4);
expo.push_back(1);
expo.push_back(2);
expo.push_back(3);
polynomial p;
cout << "The polynomial is: " << p << endl;
polynomial q(coeff, expo);
cout << "The polynomial is: " << q << endl;
return 0;
}
[有几行无用的代码,因为我想检查我的 vector 大小在哪里变为 0]
最佳答案
这一行:
polynomial();
创建一个未命名的对象并立即销毁它。它具有与以下相同的效果:
{
polynomial x;
}
我猜你是想“调用构造函数”。然而,这是不可能的,构造函数是特殊的,只能通过尝试创建对象来“调用”;或来自 ctor-initializer 列表。
我建议重新设计您的构造函数。首先,复制构造函数是伪造的(它不复制除 ptr
之外的任何字段,而且 int *ptr
也没有被普通构造函数初始化)。事实上 int *ptr;
应该完全删除。
在构造函数 polynomial()
中,对 clear()
的调用是多余的。 vector 一开始是空的,因为这是一个构造函数,所以它只在第一次创建的多项式上被调用。
我建议对带有两个参数的构造函数执行此操作:
polynomial::polynomial(vector<float> coefficient, vector<int> degree)
{
if (coefficient.size() != degree.size())
{
// typically it would be better to just throw an exception here, the caller will not expect a 1-polynomial
std::cerr << "Error. The number of coefficients are not the same as the number of exponents. Polynomial will be set to 1." << std::endl;
coeff1.push_back(1);
wala();
}
else
{
set_polynomial(coefficient, degree);
}
}
并将用于对系数和度数进行排序的其他逻辑移至名为 set_polynomial
的私有(private)函数中。这使您的构造函数易于阅读并使您的代码整洁;您可能希望稍后使用此函数以允许用户更改多项式。
专业提示:查看 std::tie
,您实际上可以使用单个命令对 coefficient
和 degree
进行排序。
关于c++ - 为什么我的 vector 大小一直重置为 0? (目前正在使用类(class)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34194376/
我只想知道它们之间的区别: .class .class{ font-size:14px; } 对比: .class > .class{ font-size:14px; } 是一样的东西吗? 最佳答案
PrimeFaces 文档的以下摘录使标题中描述的两个选择器之间似乎存在差异: .ui-widget, .ui-widget .ui-widget { font-size: 90% !imp
我正在尝试选择特定值。但我遇到了一个问题。 我有两个元素,一个有 X Y,另一个有 X Y Z。 当选择 X Y Z 时,我也收到 X Y 的值...有没有办法让它寻找 X AND Y AND Z 而
.class.class 和 .class .class 有什么区别? 最佳答案 .class .class 匹配类 .class 的任何元素,这些元素是类 .class< 的另一个元素的后代/. .
我正在研究 Classname.class 和 Classname.class.toString() 并发现了一些不寻常的东西。 .class 在同一个类上运行时似乎等同于 .class。尽管 .cl
我试图在Dart中扩展列表并在此列表中使用另一个类。 这是我的示例,其中注释出了问题: import "Radio.dart"; // extends ListBase { List ra
我有一个很大的“经理”类,我认为它做得太多了,但我不确定如何将它划分为更多逻辑单元。 一般来说类主要由以下方法组成: class FooBarManager{ GetFooEntities();
我在一个文件中定义了一个抽象父类(super class),在另一个文件中定义了一个子类。我需要父类(super class)文件和堆栈跟踪报告来找到一个包含它。 但是,当它到达“extends”行时
我在 A. Alexenderscu 的现代 C++ 设计中找到了一些模板示例 作者使用以下行的地方 template class CheckingPolicy // class SmartPt
看一下这段代码: public static class A { public void doA() { } } public static class B extends A {
我有两个具有 .body 类的 div,但是,一个位于另一个具有 .box 类的 div 中 - 如下所示: 我只想为 .box 内部的 .body 设置样式...但我在下面所
我一定是遗漏了 C++ 规范中的某些内容,因为我无法解释为什么以下代码可以成功编译: class MyClass { static void fun(); }; int main() { MyClas
我正在尝试在 python 中“模拟”命名空间。我使用内部和外部类层次结构来创建我的命名空间。例如,您希望将文件(如资源)的路径保存在一个位置。我试过这样的事情: src = #path to sou
在试验 online crystal compiler 时(这太棒了),我遇到了一个我似乎无法找到解释的错误: class Person class Current < self end
在查看我的一段代码时,我陷入了如下的一条语句。 TMyObjectClass = TMyObject 类; 我有点困惑,不知道这句话是什么意思。由于 TMyObjectClass 在该语句上方没有声明
我正在编写一个简单的应用程序,以学习一些基本的Dart编程,但无法弄清楚其结构和包含的内容-我得到了一个重复的类Point 首先,我有一个叫做MouseTrack的主类。它将初始化列表并产生循环。 #
在 org.springframework.core.SerializableTypeWrapper (版本 5.2.3),第 112 行有以下代码: if (GraalDetector.in
我希望将鼠标悬停在子导航中的列表项上,以激活页面上该类别中所有项的类(不仅仅是父元素或同级元素)。有任何想法吗?这是我的意思的一个例子: img.BLUE {border:1px solid #FF
我正在通过 ClassLoader 加载类: Class clazz = urlClassLoader.loadClass(name.substring(0, name.length() - 6).r
以下简化的类在从 get() 返回值时执行不同的操作,具体取决于该类是被赋予 double 值还是数组作为模板参数: #include "array" #include "type_traits" t
我是一名优秀的程序员,十分优秀!