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()はタイプunsignedakaではありませんunsigned int。タイプstd::size_tです。
std::size_tは、_implementation-defined typedefです。標準を参照してください。現在の実装std::size_tと同等かもしれませんがunsigned、それは関係ありません。ふりをすると、移植性のないコードや未定義の動作が発生する可能性があります。
std::size_t実際に行われています。6年以上にわたるこのとりとめのないコメントの流れの中で、すべてをカバーしたと思いますか