У меня есть массив структур, и я пытаюсь отсортировать его по цене, используя сортировку выбора.Я постоянно получаю сигнал ECX_BAD_ACCESS.
Вот что у меня есть:
#include <iostream>
#include <string>
using namespace std;
Так что это просто структура с именем и ценой.Цена - это то, что я хочу отсортировать по
struct Thing
{
std::string name;
double price;
};
. Прямо сейчас основной метод просто проверяет, работает ли функция sortThing.
Thing *sortThing(Thing input[], int size);
int main ()
{
Thing *stuff = new Thing[3];
stuff[0].name = "middle";
stuff[0].price = 2.00;
stuff[1].name = "last";
stuff[1].price = 3.00;
stuff[2].name = "first";
stuff[2].price = 1.00;
stuff = sortThing(stuff, 3);
cout << stuff[0].name + " " + stuff[1].name + " " + stuff[2].name;
return 0;
}
Здесьпроблема в.Он жалуется на строку, в которой я назначаю input [maxIndex] .name для output [i] .name, говоря: «Программа получила 'EXC_BAD_ACCESS'»
Thing *sortThing(Thing input[], int size)
{
Thing *output = new Thing[size];
Thing nullThing;
nullThing.name = "&nullThing";
int min = 0;
int minIndex;
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
if (input[j].name.compare("&nullThing") != 0 && input[j].price <= min) minIndex = j;
}
output[i].name = input[minIndex].name;
output[i].price = input[minIndex].price;
input[minIndex] = nullThing;
minIndex = 0;
min = 0;
}
return output;
}
Любая помощь приветствуется