为什么我不能使用 min 和 max 作为变量名?

2024-05-07

在这个 C++ 程序中,函数print_nums不接受 这vector<double>调用时将数字作为实际参数switch_function我想要add_num函数接受向量作为参数,但我认为它会导致同样的错误!

请注意,提到的错误不会出现在这段代码中,但是当我编译这段代码和更改时,会出现许多错误和警告double min to double minn or double max to double maxx我对提到的错误很满意,顺便说一句,我仍然是 C++ 的初学者,所以请解释为什么我不能使用 min 和 max 这两个词,也是该函数的主要错误print_nums以及任何其他错误或警告。

#include <iostream>
#include <vector>
#include <climits>
#include <cfloat>
using namespace std;
double mean{};
    double min=FLT_MAX;
    double max=FLT_MIN;
vector<double>numbers{};
char select;
char list();
void print_nums(vector<double>&numbers);
void program_func();
double nums_mean(double);
char switch_function(char);
void display_nums_mean(double);
int main(){


   program_func();


        return 0;
}
void program_func(){
    while(select!='q'&&select!='Q'){
       list();
  switch_function(select);

        }
    }
char list(){
     cout<<"Please select an Order\n";
        cout<<"***********************\n";
        cout<<"P-Print numbers\n";
        cout<<"A-Add a number\n";
        cout<<"M-Display the numbers mean\n";
        cout<<"S-Display smallest number\n";
        cout<<"L-Display largest number\n";
        cout<<"Q-Quit\n";
        cout<<"Order " ;
        cin>>select;
        cout<<endl;
    return select;

    }
void print_nums(const vector <double> &numbers){
    if(numbers.size()!=0)
     for(auto value : numbers)
              cout<<value<<endl;
            else
                cout<<"Array is empty"<<endl;

    }
void add_num(){
        cout<<"How many numbers will be added to the list : ";
        unsigned int num_of_nums;
        double num;
        cin>>num_of_nums;
        cout<<endl;
        cout<<"add numbers to the list : ";
        for(unsigned int i=0;i<num_of_nums;i++){
            cin>>num;
            numbers.push_back(num);
            }
        return;
        }
double nums_mean(double mean){
    double sum{};
    for(unsigned int i=0;i<numbers.size();++i){
        sum+=numbers.at(i);

        }
    mean = sum/(numbers.size());


    return mean;


    }
double small_num(double min){
    for(unsigned int i=0;i<numbers.size();++i){

                if(min>=numbers.at(i)){

                    min = numbers.at(i);
                    }

            }
            return min;
    }
double large_num(double max){
    for(unsigned int i=0;i<numbers.size();++i){
                if(max<=numbers.at(i)){

                    max = numbers.at(i);
                }

            }
            return max;

    }
void display_nums_mean(double mean){
    cout<<"The mean of the numbers is : "<<mean<<endl;


    }
void display_nums_min(double min){
    cout<<"The minimum number is : "<<min<<endl;

    }
void display_nums_max(double max){
    cout<<"The maximum number is : "<<max<<endl;
    return;
    }
char switch_function(char select){
    switch(select){
        case 'p':
        case 'P':
                 print_nums(numbers);
                 break;
        case 'a':
        case 'A':
                 add_num();
                 break;
        case 'm':
        case 'M':
                 mean=nums_mean(mean);
                 display_nums_mean(mean);
                 break;
        case 's':
        case 'S':
                 min=small_num(min);
                display_nums_min(min);
                 break;
        case 'l':
        case 'L':
                 max=large_num(max);
                 display_nums_max(max);
                 break;
        case 'q':
        case 'Q':
         return select;
        default:
         cout<<"Please Enter a valid character "<<endl;


    }

    return select;   
    }

You use using namespace std;(改掉这个习惯)这意味着std::min and std::max被拉入从std命名空间进入全局命名空间。这就是为什么您不能在自己的代码中使用这些名称,因为它们已经被定义了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我不能使用 min 和 max 作为变量名? 的相关文章

  • 是否有与 posix_memalign 对应的 C++ 版本?

    当我打电话时posix memalign http man7 org linux man pages man3 posix memalign 3 html为类型的对象分配对齐的内存Foo在我的 C 代码中 我需要做一个reinterpret
  • C++ 维护子类对象的混合集合

    如果我在这里错过了一个相当基本的概念 我很抱歉 但我正在尝试弄清楚如何维护多个类类型的集合 所有类类型都派生自同一个父类 并且在检索它们时仍然可以访问它们的特定于子类的方法从集合中 作为上下文 我有一个基类 BaseClass 和许多类 例
  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • 如何在多线程C++ 17程序中交换两个指针?

    我有两个指针 pA 和 pB 它们指向两个大的哈希映射对象 当pB指向的哈希图完全更新后 我想交换pB和pA 在C 17中 如何快速且线程安全地交换它们 原子 我是 c 17 的新手 2个指针的原子无等待交换可以通过以下方式实现 inclu
  • 以编程方式读取 SQL Server 查询计划建议的 SQL 特定执行的索引?

    如果我在 SSMS 中运行此命令 set showplan xml on GO exec some procedure arg1 arg2 arg3 GO set showplan xml off GO 我获得查询执行中涉及的完整调用堆栈的
  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • 如何使用 Castle Windsor 将对象注入到 WCF IErrorHandler 实现中?

    我正在使用 WCF 开发一组服务 该应用程序正在使用 Castle Windsor 进行依赖注入 我添加了一个IErrorHandler通过属性添加到服务的实现 到目前为止一切正常 这IErrorHandler对象 一个名为FaultHan
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • 查看 NuGet 包依赖关系层次结构

    有没有一种方法 文本或图形 来查看 NuGet 包之间的依赖关系层次结构 如果您使用的是新的 csproj 您可以在此处获取所有依赖项 在项目构建后 项目目录 obj project assets json
  • 使用 GCP 的数据存储区时如何区分代码是在模拟器中运行还是在 GKE 中运行

    按照中给出的说明进行操作后 我不确定是否遗漏了任何内容https cloud google com datastore docs tools datastore emulator https cloud google com datasto
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • 类型约束

    我有以下类层次结构 class Header IEnumerable
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • 如何在 C 中安全地声明 16 位字符串文字?

    我知道已经有一个标准方法 前缀为L wchar t test literal L Test 问题是wchar t不保证是16位 但是对于我的项目 我需要16位wchar t 我还想避免通过的要求 fshort wchar 那么 C 不是 C
  • C++ 中的双精度型数字

    尽管内部表示有 17 位 但 IEE754 64 位 浮点应该正确表示 15 位有效数字 有没有办法强制第 16 位和第 17 位为零 Ref http msdn microsoft com en us library system dou
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • OpenGL:仅获取模板缓冲区而没有深度缓冲区?

    我想获取一个模板缓冲区 但如果可能的话 不要承受附加深度缓冲区的开销 因为我不会使用它 我发现的大多数资源表明 虽然模板缓冲区是可选的 例如 排除它以利于获得更高的深度缓冲区精度 但我还没有看到任何请求并成功获取仅 8 位模板缓冲区的代码
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke

随机推荐