|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
//vector.h
#ifndef _VECTOR_H_
#define _VECTOR_H_
#include<iostream>
using namespace std;
typedef int Rank;
#define DEFAULT_CAPACITY 10
class Vector
{
private:
int *p,*elem;//p指向数组elem,用于释放数组
int _capacity;//_capacity是数组容量
void swap(int &i,int &j);//交换
bool bubble(Rank lo,Rank hi);//一趟扫描交换
public:
Rank _size;//_size是实际规模
void expand();//空间不足时扩容
void shrink();//缩容
Rank insert(Rank r,int const & e);//插入
int remove(Rank lo,Rank hi);//删除区间[lo,hi]
void unsort(Rank lo,Rank hi);//随机打乱原有向量顺序
Rank find(int const& e,Rank lo,Rank hi)const;//无序向量的顺序查找:返回最后一个元素e的位置;失败时,返回lo-1
void traverse();//遍历
void bubbleSort(Rank lo,Rank hi);//冒泡排序法
void print();
//构造函数
Vector(int _capacity=DEFAULT_CAPACITY,int scale=7);//c是数组容量,scale是实际规模
~Vector()//析构函数,释放elem数组
{
cout << "已释放" << _capacity << "个单位的数组" << endl;
delete [] p;
}
};
#endif
本帖最后由 xieglt 于 2020-11-19 07:45 编辑
- class Vector
- {
- private:
- int *p,*elem;//p指向数组elem,用于释放数组
- int _capacity;//_capacity是数组容量
- }
- Vector::Vector(int _capacity,int scale);
复制代码
成员变量和构造函数的参数用的一个名字。编译器怎么区分呢?
实际上,编译器使用的是参数,你的成员变量没赋值,当然是一个乱数字啦。
扩容函数也有一个问题。没有给 p 赋值,
p还是指向 oldelem。如果在其他函数里用到p,肯定会出错。
|
|