Use *std::vector::max_size()* function.

Don’t confuse this function with *std::vector::capacity()* and *std::vector::size()* functions. *vector::capacity()* tells us when a vector will be reallocated and *vector::size()* tells us the count of elements inserted into a vector.

Source code of *vector::max_size* looks like this…

_SIZT max_size() const _THROW0() { // estimate maximum array size _SIZT _Count = (_SIZT)(-1) / sizeof (_Ty); return (0 < _Count ? _Count : 1); }

-1 is being cast to _SIZT and then divided by the sizeof the vector type. Have a look at the following illustration…

template<class T> void PrintVectorMaxSize( std::vector<t>& Obj) { const std::vector</t><t>::size_type MaxSize = Obj.max_size(); std::cout < < "Max elements that can be inserted into a vector having elements of size '" << sizeof( T ) << "' is: " << MaxSize << std::endl; } int main() { PrintVectorMaxSize( std::vector<byte>() ); PrintVectorMaxSize( std::vector<int>() ); PrintVectorMaxSize( std::vector<double>() ); PrintVectorMaxSize( std::vector<char *>() ); }

Here is the output for the above program…

Max elements that can be inserted into a vector having elements of size ’1′ is: 4294967295

Max elements that can be inserted into a vector having elements of size ’4′ is: 1073741823

Max elements that can be inserted into a vector having elements of size ’8′ is: 536870911

Max elements that can be inserted into a vector having elements of size ’4′ is: 1073741823

PS: Please edit those html tags inserted by code formatter before compilation.

Technorati Tags: CPlusplus, Finding out size limit of a vector, Maximum elements that can be inserted into a vector, max_size, Size limit of a vector, std::vector, VC++, vector

Quite helpful