mahmood
mahmood

Reputation: 24815

determining the size of an array

What is the appropriate function that shows how many are there in an array?

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

So I want something that shows size of a = 2.

Upvotes: 0

Views: 125

Answers (4)

Matthias Calis
Matthias Calis

Reputation: 143

Oil Charlesworth seems to be right. The reason this is true is that when compiled a certain amount of memory is set aside (allocated) for that array no matter if it contains data or not. Therefore using a command like sizeof(a) will always yield the same result. It will return the amount of bytes allocated for your array. In this case the array is 40 bytes which makes sense because usually ints are 4 bytes long * length of the array (10) = 40.

This can differ from PC to PC though, at least, that's what I read in a tutorial a while back, the allocated size for each variable type seems to differ somewhat from PC to PC (or OS to OS).

Itś not much help, I know, but now you at least know why you can't do it with raw arrays.

Upvotes: 0

Dietmar Kühl
Dietmar Kühl

Reputation: 154045

This array has 10 elements. You just happened to assign two of them but this doesn't change the size of the areay. If you want simething to keep track of the elements you set use std::vector<int> and push_back():

std::vector<int> array;
array.push_back(1);
array.push_back(3);
int size = array.size();

Upvotes: 1

jrok
jrok

Reputation: 55425

Sounds like you need a dynamically resizable array:

std::vector<int> a;

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

std::cout << a.size(); // 2

Upvotes: 1

Oliver Charlesworth
Oliver Charlesworth

Reputation: 272802

There is no way to do this with raw arrays.

Consider a container class instead, such as std::vector:

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

std::cout << a.size() << "\n";  // Displays "2"

Upvotes: 3

Related Questions