определение размера массива - PullRequest
0 голосов
/ 18 марта 2012

Какая соответствующая функция показывает, сколько их в массиве?

int a[10];
a[0] = 1;
a[1] = 3;

Итак, я хочу что-то, что показывает size of a = 2.

Ответы [ 4 ]

3 голосов
/ 18 марта 2012

Невозможно сделать это с необработанными массивами.

Вместо этого рассмотрим класс контейнера, такой как std::vector:

std::vector<int> a;
a.push_back(1);
a.push_back(3);

std::cout << a.size() << "\n";  // Displays "2"
1 голос
/ 18 марта 2012

Этот массив состоит из 10 элементов. Вы просто назначили два из них, но это не меняет размер области. Если вы хотите, чтобы что-то отслеживало установленные вами элементы, используйте std::vector<int> и push_back():

std::vector<int> array;
array.push_back(1);
array.push_back(3);
int size = array.size();
1 голос
/ 18 марта 2012

Похоже, вам нужен динамически изменяемый размер массива:

std::vector<int> a;

a.push_back(1);
a.push_back(3);

std::cout << a.size(); // 2
0 голосов
/ 18 марта 2012

Нефть Чарльзуорт, похоже, прав.Причина этого заключается в том, что при компиляции определенный объем памяти выделяется (выделяется) для этого массива независимо от того, содержит он данные или нет.Поэтому использование такой команды, как sizeof (a), всегда даст один и тот же результат.Он вернет количество байтов, выделенных для вашего массива.В этом случае размер массива составляет 40 байт, что имеет смысл, поскольку длина обычно составляет 4 байта * длина массива (10) = 40.

Это может отличаться от ПК к ПК, хотя, по крайней мере, это то, что яНекоторое время назад прочитайте учебник, кажется, что выделенный размер для каждого типа переменной несколько отличается от ПК к ПК (или от ОС к ОС).

Это не сильно помогает, я знаю, но теперь вы, по крайней мере, знаетепочему вы не можете сделать это с необработанными массивами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...