I am getting following warning always for following type of code.
std::vector v; for ( int i = 0; i < v.size(); i++) { }
warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data
I understand that size()
returns size_t
, just wanted to know is this safe to ignore this warning or should I make all my loop variable of type size_t
If you might need to hold more than INT_MAX
items in your vector, use size_t
. In most cases, it doesn't really matter, but I use size_t
just to make the warning go away.
Better yet, use iterators:
for( auto it = v.begin(); it != v.end(); ++it )
(If your compiler doesn't support C++11, use std::vector<whatever>::iterator
in place of auto
)
C++11 also makes choosing the best index type easier (in case you use the index in some computation, not just for subscripting v
):
for( decltype(v.size()) i = 0; i < v.size(); ++i )
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With