Определение размера массива C ++ 17 - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь определить размер массива с помощью функции std::size(), но мой компилятор выдает эту ошибку:

/ root / Desktop / practice. cpp: 9: 34: ошибка: «size» не является членом «std»; Вы имели в виду 'size_t'?

Это первый код:

#include <iostream>
#include <array>

using namespace std;

int main()
{

    int values [] {2,3,4,5,6,7,8,9,10};

    cout <<"The array size is:"<< std::size(values);


    return 0;
}

После изменения выражения std::size(values) на std::size_t(values), огромное число, которое не кажется точным выскакивает. Выведенное значение:

140725039324624

1 Ответ

7 голосов
/ 22 марта 2020

Чтобы использовать std::size, необходимо включить заголовок <iterator>.

Используя вместо этого std::size_t (который является типом, а не функцией), вы выполняете стиль функции приведение, которое возвращает вам адрес памяти (указатель) первого элемента массива в виде целого числа, отсюда и непоследовательное значение для ваших глаз.

...