C ++でベクトルを反復処理する正しい方法は何ですか?
次の2つのコードフラグメントを検討してください。これは正常に機能します。
for (unsigned i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
そしてこれ:
for (int i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
を生成しwarning: comparison between signed and unsigned integer expressions
ます。
私はC ++の世界で新しいので、unsigned
変数は少し恐ろしいように見え、unsigned
正しく使用しないと変数が危険である可能性があることを知っています。これは正しいですか?
.size()
はタイプunsigned
akaではありませんunsigned int
。タイプstd::size_t
です。
std::size_t
は、_implementation-defined typedefです。標準を参照してください。現在の実装std::size_t
と同等かもしれませんがunsigned
、それは関係ありません。ふりをすると、移植性のないコードや未定義の動作が発生する可能性があります。
std::size_t
実際に行われています。6年以上にわたるこのとりとめのないコメントの流れの中で、すべてをカバーしたと思いますか