Visual Studio 2013 C++标准库

12

我正在使用Visual Studio 2013来编写以下C++代码:

#include <iostream>

using namespace std; 

int main()
{
    std::cout << "Please enter two integers: " << std::endl;
    int v1 = 0, v2 = 0;
    std::cin >> v1 >> v2; 
    int current = std::min(v1, v2);
    int max = std::max(v1, v2);
    while (current <= max)
    {
        std::cout << current << std::endl;
        ++current;
    }
    return 0;

}

这段代码旨在解决以下问题:“编写一个程序,提示用户输入两个整数。打印出由这两个整数指定范围内的每个数字。”

一开始我很困惑,但在搜索后发现std min/max可以帮助解决问题。然而,在尝试编译时我得到了错误,告诉我命名空间“std”没有成员“min”和“max”。

我做错了什么吗?还是Visual Studio 2013不包含min/max?


3
好的,以下是对 http://en.cppreference.com/w/cpp/algorithm/min 的翻译:C++标准库中的min函数返回两个参数中较小的那个。如果提供了自定义比较函数,则使用该函数确定“最小值”。模板参数:
  • T:参数类型
  • Compare:可选参数,用于比较元素。必须定义为可调用对象,接受两个参数类型T的元素,返回bool类型。
函数签名:template< class T > constexpr const T& min( const T& a, const T& b ); template< class T, class Compare > constexpr const T& min( const T& a, const T& b, Compare comp );参数:
  • a, b:要比较的元素
  • comp:二元比较谓词,可以是函数指针或函数对象。其返回值应该是一个可转换为bool类型的值。
- juanchopanza
3
只需在您的代码中加入 #include <algorithm> 即可。 - Daniel Kleinstein
1
重点在于(不幸的是非常小的文本)“定义在头文件<algorithm>中”。 - Ben Voigt
1
我通过谷歌搜索“c++ min and max”找到了答案。你为什么不能呢? - Jashaszun
1
哈哈 - 我谷歌了C++ std min和max,这是最热门的搜索结果。像往常一样,它在SO上是一个封闭的问题。 - Craig.Feied
2个回答

19

在我看来,你似乎忘记了 #include <algorithm>

你的代码应该是这样的:

#include <iostream>
#include <algorithm> // notice this

using namespace std; 

int main()
{
    std::cout << "Please enter two integers: " << std::endl;
    int v1 = 0, v2 = 0;
    std::cin >> v1 >> v2; 
    int current = std::min(v1, v2);
    int max = std::max(v1, v2);
    while (current <= max)
    {
        std::cout << current << std::endl;
        ++current;
    }
    return 0;
}

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接