填充结构向量时遇到问题:
这是结构:
struct indx{
int inK;
char* surn;
indx(int k, char* s) : inK(k), surn(s) {}
indx(){}
indx(indx *ind) : inK((*ind).inK), surn((*ind).surn){}
};
std::vector <indx> indexvec;
这是填充功能:
void Menu::sortIndex(){
//Preparacion del fichero indices
for (int i = 0; i < ag.getArrSize(); i++){
indexvec.emplace_back(new indx(i, ag.getPersona(i).getSurname()));
}
//Ordenacion del fichero indices
std::sort(indexvec.begin(), indexvec.end(), menor_surn());
}
问题在于填充indexvec[0].surn
中的向量与indexvec[1].surn
相同。
我已经检查过ag.getPersona(0).getSurename
和ag.getPersona(1).getSurename
是不一样的。
答案 0 :(得分:0)
<强>解决方案强>
void Menu::sortIndex(){
//Preparacion del fichero indices
for (int i = 0; i < ag.getArrSize(); i++){
char *s1 = new char[strlen(ag.getPersona(i).getSurname())];
strcpy(s1, ag.getPersona(i).getSurname());
indexvec.emplace_back(new indx(i, s1));
}
//Ordenacion del fichero indices
std::sort(indexvec.begin(), indexvec.end(), menor_surn());
}
这是我的第一篇文章,对我的错误感到抱歉。