关于C++中怎么创建一个容器类? 130
构建一个容器类PersonSet要求如下:1、成员变量:Person**elements;(用来存放Person对象)//提示(elements存放的是对象地址的地址,*...
构建一个容器类PersonSet
要求如下:
1、 成员变量:Person **elements;(用来存放Person对象)//提示(elements存放的是对象地址的地址,*elements存放的是对象的地址,**elements才是对象本身)
int capacity; (容器的容量)()//初始值为4,当容器中对象的个数size小于容量的一半时,要把容量减少一倍;当容器中对象的个数size等于容量时,要把容量增加一倍。
int size; (容器中对象的个数)//初始值为0
int index; (容器中对象的编号)//初始值为0
2、 成员方法:
PersonSet();//默认构造函数
~PersonSet();//析构函数
void add(Person& person);//往容器中加入一个对象
Person& removeElement();//删除容器中的最后一个对象
Person& removeElement(int const&index);//删除容器中指定位置的对象
int getSize() const;//获取当前容器中有多少个对象
void print() const;//打印容器中各个对象的信息
这个题已经有大神给出答案了?http://zhidao.baidu.com/link?url=vXYtVLwQbDHZ5AWpW1QVVmQGkYLamYt_5t-8ee9TW5C6HQj8w28bulRtgW-MEGj8bVL_lnJSsbUip7SSey7f2ynIn3vWaE7m71fw7lmNkV3
我不解的是关于removeElement()函数
void PersonSet::removeElement()
{
_size--;
checkShrink();
}
要移除对象 只是减少了size就可以了吗?为什么不需要释放element 的最后一个对象呢?单单减少size就好了,最后一个对象怎么就不存在了? 展开
要求如下:
1、 成员变量:Person **elements;(用来存放Person对象)//提示(elements存放的是对象地址的地址,*elements存放的是对象的地址,**elements才是对象本身)
int capacity; (容器的容量)()//初始值为4,当容器中对象的个数size小于容量的一半时,要把容量减少一倍;当容器中对象的个数size等于容量时,要把容量增加一倍。
int size; (容器中对象的个数)//初始值为0
int index; (容器中对象的编号)//初始值为0
2、 成员方法:
PersonSet();//默认构造函数
~PersonSet();//析构函数
void add(Person& person);//往容器中加入一个对象
Person& removeElement();//删除容器中的最后一个对象
Person& removeElement(int const&index);//删除容器中指定位置的对象
int getSize() const;//获取当前容器中有多少个对象
void print() const;//打印容器中各个对象的信息
这个题已经有大神给出答案了?http://zhidao.baidu.com/link?url=vXYtVLwQbDHZ5AWpW1QVVmQGkYLamYt_5t-8ee9TW5C6HQj8w28bulRtgW-MEGj8bVL_lnJSsbUip7SSey7f2ynIn3vWaE7m71fw7lmNkV3
我不解的是关于removeElement()函数
void PersonSet::removeElement()
{
_size--;
checkShrink();
}
要移除对象 只是减少了size就可以了吗?为什么不需要释放element 的最后一个对象呢?单单减少size就好了,最后一个对象怎么就不存在了? 展开
1个回答
展开全部
因为我们使用数组实现的,为了防止过多的分配释放内存,就有了一个_capacity和_size,我们可以通过_size来保证数据的可靠性,所以_size--就可以了.
通过重载[],我们可以通过object.[x],判断x是否大于_size来保证可靠性
通过重载[],我们可以通过object.[x],判断x是否大于_size来保证可靠性
追问
比如现在有3个_element 如果只是_size--,不是只相当于把set容器里的——size变量减小,第三个_element是在哪里被去掉的啊,给它分配的内存什么时候被回收掉了呢?求指教会加悬赏的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询