void array_print(vector<int> & arr)
{
for (int i = 0; i < arr.size(); ++i) cout<<i<<" Ячейка массива:"<<arr[i]<<endl;
}
void array_print(int arr[])
{
for (int i = 0; i < /*arr.size()*/; ++i) cout<<i<<" Ячейка массива:"<<arr[i]<<endl;
}
В функции array_print
параметр arr
является указателем на элемент массива. Узнать размер массива по указателю на его элемент невозможно.
В ситуации, когда размер массива не фиксирован на стадии компиляции, у вас есть только один вариант - передавать размер массива извне вручную
void array_print(int arr[], int n)
{
for (int i = 0; i < n; ++i) cout<<i<<" Ячейка массива:"<<arr[i]<<endl;
}
Есть шаблонная.
template<class T, size_t N>
size_t length(T(&)[N])
{
return N;
}
int main()
{
int a[10];
cout << length(a) << endl;
}
Но учтите, что фокус типа
int * a = new int[20];
cout << length(a) << endl;
не пройдет.
Как не пройдет и
void func(int a[])
{
cout << length(a) << endl;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
В настройках проекта Visual Studio можно выбирать набор используемых символовОбычно там есть два пункта:
Пытаюсь записать значение из QSpinBox в переменную int с помощью слота: