Я потратил хороший час, пытаясь понять это - как написать эту функцию (вверху кода - insertionSort), которая позволяет мне передать массив по ссылке на него , Таким образом, я могу вызвать '.size' в массиве. Он должен быть массивом для этого назначения.Передача неизвестного массива в функцию по ссылке (C++)
Я пытался не передавая его по ссылке, разыменовании массив перед вызовом размера на нем, и т.д. Я продолжаю получать ошибки :(
Это самая последняя ошибка компилятора для этого кода:.
insertionSort.cpp: 11: ошибка: параметра 'А' включает в себя ссылку на массив неизвестного связанного 'INT []' insertionSort.cpp: В функции 'недействительной сортировка вставок (интермедиат (&) [])': insertionSort.cpp : 13: ошибка: запрос для пользователя '' '' '(INT) A», который имеет неклассовую типа 'Int'
#include <iostream>
//#include <array> - says no such file or directory
using namespace std;
void insertionSort(int (&A)[]) <-----ERROR HERE
{
for (int j=1; j <= A->size(); j++) <-----ERROR HERE
{
int key = A[j];
//now insert A[j] into the sorted sequence a[0...j-1].
int i = j-1;
while (i >= 0 && A[i] > key)
{
A[i+1] = A[i];
i -= 1;
}
A[i+1] = key;
}
}
int main()
{
int Asize = 0;
cout << "Hello. \nPlease enter a number value for the insertionSort Array size and then hit enter: " << endl;
cin >> Asize;
int A[Asize];
char Atype;
cout << "There are three ways to order your inserstionSort array; \nb - for best case \nw - for worst case \na - for average case" << endl << "Which type do you desire for this array? \nPlease enter 'b', 'w', or 'a': " << endl;
cin >> Atype;
if (Atype == 'b')
{
cout << "You have chosen type b." << endl;
}
else if (Atype == 'w')
{
cout << "You have chosen type w." << endl;
}
else if (Atype == 'a')
{
cout << "You have chosen type a." << endl;
}
cout << "Terminate Program" << endl;
}
Это не Java. У родных массивов нет члена 'size()'. – WhozCraig
Если размер не фиксируется во время компиляции, вы должны использовать 'std :: vector <>' – quantdev
. Вы не можете «вызывать. Размер в массиве». Встроенные массивы на C++ не являются классами, у них нет методов. Вы не можете «называть» что-либо в массиве. И вообще невозможно определить размер массива, если вы уже не знаете этого размера. – AnT