A warning - comparison between signed and unsigned integer expressions [-Wsign-compare]
1
vector<int> histogram = Histogram(img);
int total = 0;
for (int i = 0; i != histogram.size(); ++i)
{
total += histogram[i];
}
123456
警告的意思是一個無符號數整型與有符號整型最好不要比較。i是有符號整型,histogram.size()是無符號整型,所以會產生這個警告。
解決方式:
for (unsigned int i = 0; i != histogram.size(); ++i)
最省力的,將i改成unsigned int 就不會產生這個警告了for (std::size_t i = 0; i != histogram.size(); i++)
size_t 類型定義在cstddef.h中,該文件是C標准庫的頭文件stddef.h的C++版。它是一個與機器相關的unsigned類型,其大小足以保證存儲內存中對象的大小。在用下標訪問元素時,vector使用vector::size_type作為下標類型,而數組下標的正確類型則是size_t。for (vector::size_type i = 0; i != histogram.size(); ++i)
size_type是由string類類型和vector類類型定義的類型,用以保存任意string對象或vector對象的長度,標准庫類型將size_type定義為unsigned類型。
三種解決方式都試過了,解決問題~
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:http://blog.csdn.net/qq_43792862/article/details/97647454