C++第二个项目实现(七)

2014-11-24 12:08:19 · 作者: · 浏览: 2
}

return *(_elements[_index++]);
}
/*******************************************
函数名称:Person& removeElement();
函数功能:删除元素,从后向前,依次删除
传入参数:N/A
返回 值 :N/A
********************************************/
Person& PersonSet::removeElement(){
if(_size==0){
cout<<"对象为空,不能删除!"< exit(1);
}
_size--;

Person* p = _elements[_size];

if(_size<_capacity/2){

Person** temp=_elements;
_elements=new Person*[_capacity/2];
for(int i=0;i<_size;i++){
_elements[i]=temp[i];
}
_capacity/=2;
delete [] temp;
}

return *p;
}
/*******************************************
函数名称:Person& removeElement(int index);
函数功能:删除指定元素
传入参数:N/A
返回 值 :N/A
********************************************/
Person& PersonSet::removeElement(int index){
if(index>=_size){
cout<<"输入有错!"<
}
_size--;
Person* p = _elements[index];

if(_size<_capacity/2){

Person** temp=_elements;
_elements=new Person*[_capacity/2];
for(int i=0;i<_size;i++){
_elements[i]=temp[i];
}
_capacity/=2;
delete [] temp;
}

return *p;
}
/*******************************************
函数名称:int size();
函数功能:得到实际的个数
传入参数:N/A
返回 值 :N/A
********************************************/
int PersonSet::size(){
return _size;
}
/*******************************************
函数名称: void print();
函数功能:print功能
传入参数:N/A
返回 值 :N/A
********************************************/
void PersonSet::print()const{

for(int i=0;i<_size;i++){

(*_elements[i]).print();
printf("\n");
}

}
/*******************************************
函数名称: void reset();
函数功能:重置_index=0
传入参数:N/A
返回 值 :N/A
********************************************/
void PersonSet::reset(){
_index=0;
}
/*******************************************
函数名称: ~PersonSet();
函数功能:析构函数
传入参数:N/A
返回 值 :N/A
********************************************/
PersonSet::~PersonSet(){
delete [] _elements;
}
/*******************************************
函数名称: Person& operator[](int x);
函数功能:重载下标运算符
传入参数:N/A
返回 值 :N/A
********************************************/
Person& PersonSet::operator[](int x){

return *(_elements[x]);
}
/*******************************************
函数名称: const Person& operator[](int x)const;
函数功能:重载不可修改的下标运算符
传入参数:N/A
返回 值 :N/A
********************************************/
const Person& PersonSet::operator[](int x)const{

return *(_elements[x]);
}
/*******************************************
函数名称: PersonSet(PersonSet& p);
函数功能:拷贝构造函数
传入参数:N/A
返回 值 :N/A
********************************************/
PersonSet::PersonSet(const PersonSet& p){

_capacity=p._capacity;
_size=p._size;
_index=p._index;

_elements=new Person*[_size];

for(int i=0;i<_size;i++){

_elements[i]=p._elements[i];
}
}
/*******************************************
函数名称: const PersonSet& operator=(const PersonSet& p);
函数功能:赋值运算符重载
传入参数:N/A
返回 值 :N/A
********************************************/
const PersonSet& PersonSet::operator=(const PersonSet& p){
if(this!=&p){
_capacity=p._capacity;
_size=p._size;
_index=p._index;

delete [] _elements;

_elements=new Person*[_size];
for(int i=0;i<_size;i++)
{

_elements[i]=p._elements[i];
}

}

return *this;
}

Main.cpp

#include
using namespace std;
#include "Voter.h"
#include "Candidate.h"
#include "PersonSet.h"
#i