我用g++ -Wuninitialized
(g++ Version 7.5.0)编译了以下代码,但没有收到任何警告:
#include <algorithm>
int main() {
int a, b;
b = std::min(a, 0);
}
Run Code Online (Sandbox Code Playgroud)
如您所见,std::min()
使用参数a
and调用0
,但此时a
未初始化。这应该给你一个警告,但它没有。
如果std::min()
用自定义函数替换,编译器会给你一个警告:
代码
int f(int x) {
return 2 * x;
}
int main() {
int a, b;
b = f(a);
}
Run Code Online (Sandbox Code Playgroud)
警告
<source>: In function 'int main()':
<source>:11:10: warning: 'a' is used uninitialized in this function [-Wuninitialized]
11 | b = f(a);
| ~^~~
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用std::min()
?我也试过std::max()
,它也没有给我警告。但是std::hypot() …
我正在 C++ 中寻找一个索引容器,它具有以下属性:
我正在考虑使用类似的地图的解决方法,但我无法弄清楚。Java 中还有一个名为TreeList的容器,它具有上述属性。