jtwc 发表于 2023-6-2 11:23

C++查找队列中最小值为0,如何查找非0的最小值?

本帖最后由 jtwc 于 2023-6-2 11:26 编辑

C++查找队列中最小值为0,如何查找非0的最小值?
      vector<double>vec3;//创建队列3
                vec3.insert(vec3.begin(), a);//向队列3在开始插入变量
                int v_size = vec3.size();//取值之前要先计算一下队列中有多少个元素,取值不能超过范围

                //取vec3中的最小值
                double minvec3 = *min_element(vec3.begin(), vec3.end());
                z = minvec3;
                printf("最小值:%.f\n", z);
出来z=0;
如何查找非0的最小值?

eofitg 发表于 2023-6-2 16:47

排序再去重输出第二个元素?
或者直接遍历一下?

一闪一闪233 发表于 2023-6-2 18:39

vector<double> vec3;// 创建队列3
vec3.insert(vec3.begin(), a);// 向队列3在开始插入变量
int v_size = vec3.size();// 取值之前要先计算一下队列中有多少个元素,取值不能超过范围

// 查找vec3中的非零最小值
double minvec3 = numeric_limits<double>::max();// 初始化为一个较大的值
for (const auto& num : vec3) {
    if (num != 0 && num < minvec3) {
      minvec3 = num;
    }
}

if (minvec3 == numeric_limits<double>::max()) {
    printf("队列中没有非零值。\n");
} else {
    printf("非零的最小值:%.f\n", minvec3);
}

jmxjiamingxu 发表于 2023-6-2 20:45

写一个循环遍历。还要注意一下浮点数如何判0的

jtwc 发表于 2023-6-3 09:02

eofitg 发表于 2023-6-2 16:47
排序再去重输出第二个元素?
或者直接遍历一下?

谢谢老师

jtwc 发表于 2023-6-3 13:57

一闪一闪233 发表于 2023-6-2 18:39
vector vec3;// 创建队列3
vec3.insert(vec3.begin(), a);// 向队列3在开始插 ...

谢谢老师
页: [1]
查看完整版本: C++查找队列中最小值为0,如何查找非0的最小值?