C++ 整数集数组实现
我有以下实现IntegerSet类的代码,其思想是当我插入元素时,它应该排序,然后打印它C++ 整数集数组实现,c++,arrays,C++,Arrays,我有以下实现IntegerSet类的代码,其思想是当我插入元素时,它应该排序,然后打印它 #include <iostream> using namespace std; class IntSet{ public : int n,*x; public: IntSet(int maxelms,int maxval){ x=new int[1+maxelms]; n=0; x[0]=maxval; } int
#include <iostream>
using namespace std;
class IntSet{
public :
int n,*x;
public:
IntSet(int maxelms,int maxval){
x=new int[1+maxelms];
n=0;
x[0]=maxval;
}
int size(){ return n;}
void insert(int t){
for (int i=0;x[i]<t;i++){
if (x[i]==t)
return ;
for (int j=n;j>=i;j--)
x[j+1]=x[j];
x[i]=t;
n++;
}
}
void print(){
for (int i=0;i<n;i++){
cout<<x[i]<<" ";
}
}
};
int main(){
IntSet b(11,20);
b.insert(0);
b.insert(6);
b.insert(3);
b.insert(7);
b.insert(5);
b.insert(11);
b.insert(10);
b.insert(18);
b.insert(13);
b.insert(16);
b.print();
return 0;
}
但问题是,当我运行时,它显示只按任意键继续,有什么问题吗?您的插入代码从未进入循环,因为向量中的第一个元素总是大于传递给函数的元素,并且返回时不做任何操作
代码有点晦涩。向上看——这就是你在这里需要的
除此之外,由于类没有清除内存,因此代码会泄漏内存。最好使用std::vector,而不是手动管理内存。Donno,请尝试运行:
IntSet b(11,20);
b.print();
b.insert(0);
b.print();
b.insert(6);
b.print();
b.insert(3);
b.print();
b.insert(7);
b.print();
b.insert(5);
b.print();
b.insert(11);
b.print();
b.insert(10);
b.print();
b.insert(18);
b.print();
b.insert(13);
b.print();
b.insert(16);
b.print();
看看发生了什么…我有另一个问题,我应该开始新的问题吗?我已经更改了代码,但它也不起作用