我在编写以下代码时遇到了问题:
int average = std::accumulate(vi.begin(), vi.end(), 0) / vi.size();
如果在vi.size()
上没有进行int
转换,输出结果会是垃圾值,因为size()
返回的是无符号整数。
如果我没有通过谷歌搜索vector的参考资料,我永远不会想到这一点。有没有避免这种陷阱的方法?使用-Wall
和-pedantic
,gcc似乎不会给出任何关于这种除法的警告。