원글:
https://plus.google.com/+PeterKasting/posts/8HS1CDwCzAd
for (int i = 0; i < vec.size(); ++i) foo(vec[i]); // Wrong
for (size_t i = 0; i < vec.size(); ++i) foo(vec[i]); // Correct
이 예제에서는 어떤것을 쓰던 상관이 없어보이지만, 잘못된 코드를 사람들이 너무 많이 쓰는것을 막아야 할것같다. 또 API에서 index나 length를 나타낼때 int를 size_t대신 쓰는 잘못된 경우도 많다. 암묵적으로 혹은 대놓고 API호출시에 cast를 발생시키며, 찾기어려운 잘못된 코드를 만들고, int 의 음수값때문에 발생되는 문제가 생길수도있다. (size_t는 항상 양수로 시작되므로).
또한 size_t 값과 int를 비교하는 상황이 생길수도 있다. 컴파일러는 이런 상황들에 대해 Warn을 날리지만 대부분 사람들은 이런 Warning을 disable해 놓는다. 심지어 논쟁을 벌일때도 무모함을 보이기도한다.
....
중략
...
그렇다면 size_t를 어디에 써야하나?
sizes, lengths, counts, indexes of objects contained in memory. STL의 경우 어떨까? STL의 경우 분명이 size_t를 쓰고 STL을 이용할경우 size_t를 써야한다!
사실 size_t를 사용하는게 int보다 적절한경우가 많으며 본인은 int보다 더 많이 사용한다.
No comments:
Post a Comment