📄 stuinfovec.cpp
字号:
#include "StuInfoVec.h"
StuInfoVec::~StuInfoVec(){
recVec.clear();}
void StuInfoVec::addRecord (Record* rec)//用指针增添元素
{ if(rec!=NULL)
recVec.push_back(rec);
}
int StuInfoVec::removePerform(){
int deletedNum = 0;
Iterator it,it2,it_end;
Iterator it_beforeBegin = recVec.begin() - 1;
int inx;// 被删除记录的名次
for (it=recVec.end()-1;it!=it_beforeBegin;it--)
{
if((*it)->toBeDeleted){
inx=(*it)->index;
it=recVec.erase(it);//删除待标记的元素
deletedNum++;
it_end=recVec.end();
for (it2=recVec.begin();it2!=it_end;it2++)//对剩余元素进行排列
{if((*it2)->index>inx)
(*it2)->index--;}
}
}
return deletedNum;
}
Iterator StuInfoVec::findRecord(const string& pattern, int type, Iterator from)
{Iterator it;
Iterator it_end =recVec.end();
for(it = from;it!=it_end;it++)//按三种类型 名字 学号 名次来寻找
if((type==0&&(*it)->number==pattern||
type==1&&(*it)->name==pattern||
type==2&&(*it)->index==atoi(pattern.c_str())))
break;
return it;
}
void StuInfoVec::saveRecords(ostream& os){
os<<recVec;
}
int StuInfoVec::loadRecords(istream& is){//用输入流对元素进行控制
int ori = size();
is >> recVec;
int addCount = size()- ori;
if( ori != 0 )
{
int i ,j;
int num =size();
int ncount;
float sumi;
for(i=0;i<num;i++)
{
ncount =0;
sumi=recVec[i]->sum;
for(j=0;j<num;j++)
{
if (recVec[j]->sum>sumi)//检测所加元素的大小来对其进行排列
ncount++;
}
recVec[i]->index = ncount+1;//所包含的元素为原有的加1
} }
return addCount;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -