# get length of multidimensional array with different length in c++?

I have a multidimensional array and i’m trying to get the length of each column. But it’s returning 20 for all of them.

``````int buttons[16][5] = {{0, 4, 1},{1, 0, 2, 5},{2, 1, 3, 6},{3, 2, 7},{4,0,5,8},{5,1,4,6,9},{6,2,5,7,10},{7,3,6,11},{8,4,9,12},{9,5,8,10,13},{10,6,9,11,14},{11,7,10,15},{12,8,13},{13,9,12,14},{14,10,13,15},{15,11,14}};

sizeof(buttons[0]);
``````

### >Solution :

You are declaring an C-style array where each element is an array of 5 int. Therefore, with `sizeof(buttons[0])`, you are getting the size of 5 ints. Usually, ints have a size of 4 bytes, hence you get 20. Only apparently has `buttons[0]` 3 elements: in fact, in your code, you initialize only the first 3 elements of `buttons[0]`.

If you want a multidimensional array, where each "column" has different size, you should better use `std::vector` which can hold array of variable size. Then `size()` gives you the actual number of element.

Example code:

``````#include <iostream>
#include <vector>

int main()
{
std::vector<int> buttons[16] = {{0, 4, 1},{1, 0, 2, 5},{2, 1, 3, 6},{3, 2, 7},{4,0,5,8},{5,1,4,6,9},{6,2,5,7,10},{7,3,6,11},{8,4,9,12},{9,5,8,10,13},{10,6,9,11,14},{11,7,10,15},{12,8,13},{13,9,12,14},{14,10,13,15},{15,11,14}};

std::cout << buttons[0].size();
}
``````

Even better, you could use a `vector` of `vector`:

``````#include <iostream>
#include <vector>

int main()
{
std::vector<std::vector<int>> buttons = {{0, 4, 1},{1, 0, 2, 5},{2, 1, 3, 6},{3, 2, 7},{4,0,5,8},{5,1,4,6,9},{6,2,5,7,10},{7,3,6,11},{8,4,9,12},{9,5,8,10,13},{10,6,9,11,14},{11,7,10,15},{12,8,13},{13,9,12,14},{14,10,13,15},{15,11,14}};

std::cout << buttons[0].size();
}
``````