C ++,结构矢量填充

时间:2016-06-01 16:12:02

标签: c++ pointers vector struct

填充结构向量时遇到问题:

这是结构:

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是不一样的。

1 个答案:

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

}

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