小编Tc1*_*c14的帖子

g++ -Wuninitialized 在 std::min() 处不显示警告

我用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()使用参数aand调用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++ g++ gcc-warning

6
推荐指数
0
解决办法
53
查看次数

在 C++ 中以 O(log n) 查找具有查找和插入/删除的索引容器

我正在 C++ 中寻找一个索引容器,它具有以下属性:

  • 获取 O(log n) 中第 k 个位置的元素
  • 在 O(log n) 中的第 k 个位置插入一个元素
  • 删除 O(log n) 中第 k 个位置的元素

我正在考虑使用类似的地图的解决方法,但我无法弄清楚。Java 中还有一个名为TreeList的容器,它具有上述属性。

c++ containers data-structures

1
推荐指数
1
解决办法
55
查看次数

标签 统计

c++ ×2

containers ×1

data-structures ×1

g++ ×1

gcc-warning ×1