Я пытаюсь реализовать алгоритм сортировки, в котором вектор передается в функцию и изменяется. Однако при печати изменения не сохраняются. Не обращайте внимания на тот факт, что полная версия simpleSort не реализована (цель - реализовать quickSort). Вопрос связан с поведением вектора. Вот некоторые ресурсы, которые я изучил: Передача векторов по ссылке Передача вектора по ссылке Передача вектора по ссылке на функцию, но изменение не сохраняется
Я думаю, что делаю то, что они говорят, но мне не хватает чего-то фундаментального. Ниже приведен пример кода:
#include "stdafx.h"
#include <iostream>
#include <vector>
void simpleSort(std::vector<float>& theta , int);
void printArray(std::vector<float> & arr, int size)
int main()
{
std::vector<float> theta;
theta.push_back(10);
theta.push_back(-5);
theta.push_back(-3);
simpleSort(theta, theta.size()-1);
printf("Sorted array: \n");
printArray(theta, theta.size());
system("pause");
return 0;
}
void simpleSort(std::vector<float>& theta, int n)
{
for (int i = 0; i < n ; ++i)
{
if (theta[i] < theta[i + 1]) std::swap(theta[i], theta[i + 1]);
}
}
void printArray(std::vector<float> & arr, int size)
{
int i;
for (i = 0; i < size; i++)
printf("%d ", arr[i]);
printf("\n");
}
Как видно, введены значения {10, -5, -3}. Когда я печатаю результат в main, я получаю {0, 0, 0}. Но если я напечатаю вектор в самой функции, я получу {-5, -3, 10}.
Я думал, что правильно передаю вектор по ссылке, используя «&», но я думаю, что это не так.