C++,结构矢量填充

C++, Struct Vector Filling

本文关键字:填充 结构 C++      更新时间:2023-10-16

我在填写结构向量时遇到问题:

这是结构:

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).getSurenameag.getPersona(1).getSurename不一样。

解决方案

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());

}

这是我的第一篇文章,对我的错误感到抱歉。