Я пытаюсь построить функцию, которая принимает вектор, ранжирует его, сортирует и выводит отсортированный и ранжированный вектор с исходным расположением значений. Например: Ввод: [10,332,42,0,9,0] Вывод: [3, 5, 4, 2, 1]
Я использовал этот вопрос о переполнении стека a> (в частности, ответ Мариуса) в качестве справочного руководства, однако сейчас я застрял в своем коде и не понимаю, в чем проблема. Я использую С++ 03.
Одна из ошибок, которые я получаю, это
error: invalid types ‘const float*[float]’ for array subscript’ for array subscript
в моем заявлении if
.
//Rank the values in a vector
std::vector<float> rankSort(const float *v_temp, size_t size)
{
vector <float> v_sort;
//create a new array with increasing values from 0 to n-1
for(unsigned i = 0; i < size; i++)
{
v_sort.push_back(i);
}
bool swapped = false;
do
{
for(unsigned i = 0; i < size; i++)
{
if(v_temp[v_sort[i]] > v_temp[v_sort[i+1]]) //error line
{
float temp = v_sort[i];
v_sort[i] = v_sort[i+1];
v_sort[i+1] = temp;
swapped = true;
}
}
}
while(swapped);
return v_sort;
}
std::vector<float> rankSort(const std::vector<float> &v_temp)
{
return rankSort(&v_temp[0], v_temp.size());
}
i == size - 1
какой элемент вv_sort
будет проиндексированi + 1
? - person Some programmer dude   schedule 16.12.2016