Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

size_t vs int warning

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

like image 680
Avinash Avatar asked Jul 05 '11 04:07

Avinash


Video Answer


1 Answers

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 ) 
like image 143
Ben Voigt Avatar answered Oct 22 '22 08:10

Ben Voigt