Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 整数集数组实现_C++_Arrays - Fatal编程技术网

C++ 整数集数组实现

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

我有以下实现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 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();

看看发生了什么…

我有另一个问题,我应该开始新的问题吗?我已经更改了代码,但它也不起作用