IntSet数组实现
IntSet array implementation
我有以下代码实现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;
}
但问题是,当我运行时,它显示只按任何键继续,有什么问题吗?
您的insert
代码永远不会进入循环(因为vector中的第一个元素总是大于传递给函数的任何元素),并且不做任何操作就返回。
代码有点晦涩。查找插入排序-这就是你需要的。
除此之外,你的代码泄漏内存,因为类没有清理它的内存。最好使用std::vector
而不是手动管理内存。
不要,试着运行:
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();
相关文章:
- 实现链表数组
- C++数组队列实现方法错误
- 如何在 c++ 中实现堆栈数组?
- 为什么在此排序算法实现中,向量明显比数组慢?
- 如何使用列表/数组在C++中实现 Python "... not in ..."?
- 类中的数组变量C++导致"was not declared in this scope"实现文件的一个函数中错误,但在构造函数中不会导致错误
- 如何实现删除数组的功能?
- 正确实现类函数数组
- 在内存中连续分配的多维数组的实现
- 在给定程序中降低矢量数组实现堆栈的时间复杂度有哪些不同的可能方法?
- 如何在本机 c++ jni 中实现 java 类型数组
- C++ 使用数组实现堆栈
- CRC32 C++使用布尔数组和手动逐位异或实现
- 使用 C++ STL 的数组实现
- 如何使用 c++ 模板实现整数、字符串、浮点数和日期对象的数组
- 使用线性存储实现2D数组
- 为自定义数组实现迭代器
- 在 C++ 中实现 1D 数组中的 2D 数组坐标
- 类成员数组的实现:数组下标的类型无效
- 在c++中实现数组