How to Get Length Of Int* Array

• Hello Friends And Qt Experts
Currently I am Facing int* array length finding Problem

I want to find the Length of Dynamic array

i am able to find the length of int[] but i can't find the length of int*

i want to know how many elements are in int* Array

For Example ::

int *Temp = new int;
Temp = 10;
Temp = 20;
Temp = 30;
Temp = 40;
Temp = 50;
Temp = 60;
Temp = 70;
Temp = 80;
Temp = 90;
Temp = 100;

I want to find The Length of Temp
Here you can see i have add 10 Elements in My Temp Array

Is There any way to Find the length of any dynamic Array at runtime ?

• @Ketan__Patel__0011

std::vector<std::vector<std::vector<int>>> Temp;

int targetSize = 4;
Temp.resize(targetSize,std::vector<std::vector<int> >(targetSize,std::vector<int>(targetSize)));

Temp.at(0).at(0).at(0) = 10;
Temp.at(0).at(0).at(1) = 20;
Temp.at(0).at(0).at(2) = 30;
Temp.at(0).at(0).at(3) = 40;

• No, there is no way. int* is only a pointer, it doesn't even know it's an array.

Why not use a proper array?

• Is There any way to Find the length of any dynamic Array at runtime ?

Use a proper container.

• @Asperamanca

There are The Lot's of reason for it like Runtime Size Or Memory Allocation Based On My Data

• @Ketan__Patel__0011

like @Asperamanca said, you can't,
why not use std::vector ? thats the perfect substitution

• @Christian-Ehrlicher

• @J-Hilk

std::vector is good idea but some issues like Memory location access or Memory Allocation

And Very difficult for Multidimensional

• std::vector is good idea but some issues like Memory location access or Memory Allocation

what do you mean? vector is literally a heap allocated array

And Very difficult for Multidimensional

multidimensionalism is an illusion anyway but if you want the [][] or at().at() syntax available to you

std::vector<std::vector<int>>

here, admittedly, you may get into differences between std::vector and good old c-array, memory wise

• @J-Hilk

Application crashed When i used this Syntax for Vector

std::vector<std::vector<std::vector<int>>> Temp;

Temp.at(0).at(0).at(0) = 10; /// My Application Crashed at this point
Temp.at(0).at(0).at(1) = 20;
Temp.at(0).at(0).at(2) = 30;
Temp.at(0).at(0).at(3) = 40;

cout << Temp;
cout << Temp;
cout << Temp;
cout << Temp;

What's Wrong in this ?

• @Ketan__Patel__0011
you need to either reserve a size for your vectors or use the vector functions to append data

push_back, resize, reserve etc

https://en.cppreference.com/w/cpp/container/vector

or use initializer lists

• @J-Hilk

I was Try this But Application is Still Crashing

std::vector<std::vector<std::vector<int>>> Temp;

Temp.at(0).at(0).push_back(10);
Temp.at(0).at(0).push_back(20);
Temp.at(0).at(0).push_back(30);
Temp.at(0).at(0).push_back(40);

cout << Temp.at(0).at(0).at(0);
cout << Temp.at(0).at(0).at(1);
cout << Temp.at(0).at(0).at(2);
cout << Temp.at(0).at(0).at(3);

• @Ketan__Patel__0011

std::vector<std::vector<std::vector<int>>> Temp;

int targetSize = 4;
Temp.resize(targetSize,std::vector<std::vector<int> >(targetSize,std::vector<int>(targetSize)));

Temp.at(0).at(0).at(0) = 10;
Temp.at(0).at(0).at(1) = 20;
Temp.at(0).at(0).at(2) = 30;
Temp.at(0).at(0).at(3) = 40;

• was Try this But Application is Still Crashing

std::vector<std::vector<std::vector<int>>> Temp;

Temp.at(0).at(0).push_back(10);

Yes of course, the 2 first vector are not defined!

• Maybe something like this helps:
https://www.learncpp.com/cpp-tutorial/an-introduction-to-stdvector/

It also refers to std::array, which might be an alternative if you really only need fixed-sized arrays.

i can't find the length of the Vector

• @Asperamanca

But Fixed Sized array not useful in my case

• @KroMignon

Yes i see this example

They Are Declare Singla Dimension Vector and Add First 10 Element and Again Add 10 Element After the First 10th Element Index and in last step they are remove the element and display the size of vector not a length

• display the size of vector not a length

I don't understand what you want?!?
By simply reading std::vector() documentation, you could find yourself:

• vector::size(): Returns the number of elements in the vector.
• vector::capacity(): Returns the size of the storage space currently allocated for the vector, expressed in terms of elements.

• @KroMignon

i want to find how many elements are in the My Vector

i was used vector::size() function but it is return to me total size of vector

for example

my Vector can store 10 elements but i am add only 6 elements

so my Vector length is 6 And Vector size is 10

• i want to find how many elements are in the My Vector

Here are a little code extract which should be self explaining:

std::vector<int> test;
qDebug() << "Size is" << test.size() << "/ Capacity is" << test.capacity();
test.reserve(10);
qDebug() << "Size is" << test.size() << "/ Capacity is" << test.capacity();
test.push_back(11);
qDebug() << "Size is" << test.size() << "/ Capacity is" << test.capacity();
test.push_back(11);
test.push_back(11);
qDebug() << "Size is" << test.size() << "/ Capacity is" << test.capacity();
test.pop_back();
qDebug() << "Size is" << test.size() << "/ Capacity is" << test.capacity();

and output is:
Size is 0 / Capacity is 0
Size is 0 / Capacity is 10
Size is 1 / Capacity is 10
Size is 3 / Capacity is 10
Size is 2 / Capacity is 10

• so my Vector length is 6 And Vector size is 10

No, thats wrong. The size is 6, the std::vector<> has no function length().

• This post is deleted!

• "length" of a multidimensional array is kind of a meaningless concept...and resizing those structures requires well defined conops of what it means to resize, and what to do with new elements, or elements that must be thrown away...AND...will almost always require complete data move to a new container of appropriate size.

While sometimes useful, a vector of vectors is nontrivial to manage correctly.

• @Ketan__Patel__0011
I don't really understand just which "sizes" or "lengths" you are wanting to discover.

A vector of vectors is a jagged array, meaning that each sub-vector element in a parent vector has its own size/length/number of elements. It is not "rectangular" like C/C++ int array[outer_elements][inner_elements] would be. Also, unlike the C one, you can & do add elements at all levels dynamically, so the number of items change at runtime. You would have to iterate the vector to discover its child element sizes to discover the total size used. You can resize() and/or reserve() if you want to reserve a certain size (number of elements)/make it "rectangular", and thereby avoid needing to iterate to discover size if desired.

@Christian-Ehrlicher , @KroMignon , @J-Hilk have given you code/references for the above.

• vector will solve allocation/deallocation while keeping contiguous storage. It is intended for 1D arrays; everything more dimensional needs to come from somewhere else; doing it yourself while not familiar with C++ is probably not the best idea.

Since it seems you're dealing with matrices, getting a dedicated, fast, reliable library is probably the best thing to do. I suggest looking into Eigen.