Я пытаюсь отсортировать структуру, содержащую строку, по возрасту и индексу. Однако, когда я пытаюсь выполнить qsort, g ++ 8.3.0 выдает ошибку времени выполнения. Я решил эту проблему путем qsorting структуры только с возрастом и индексом, но я не уверен, в чем проблема.
Я думаю, что это из-за строки в структуре. Но я хочу объяснить, в чем причина.
Не встречается в Visual Studio cpp и Visual Code G ++ 9.2.0.
struct tagMemberInfo{
string name;
int index, age;
tagMemberInfo() : name(""), index(0), age(0) {}
}; typedef tagMemberInfo Member;
int MemberSortCoreFunction(const void * a, const void * b)
{
if ((*(Member*)a).age > (*(Member*)b).age) return 1;
else if ((*(Member*)a).age == (*(Member*)b).age)
{
if ((*(Member*)a).index > (*(Member*)b).index)
return 1;
else if ((*(Member*)a).index < (*(Member*)b).index)
return -1;
else if ((*(Member*)a).index == (*(Member*)b).index)
return 0;
else return -1;
}
else if ((*(Member*)a).age < (*(Member*)b).age) return -1;
else return -1;
};
vector<Member> vMember;
qsort(&vMember[0], vMember.size(), sizeof(Member), MemberSortCoreFunction);