为什么std :: greater不再是Visual Studio 2012中std命名空间的一部分?我现在需要加入<functional>
我认为STL库在工具集中保持不变
答案 0 :(得分:16)
为什么std :: greater不再是Visual Studio 2012中std命名空间的一部分?
如果是这样的话,我会感到非常惊讶。
我现在需要加入
<functional.h>
不,您需要包含<functional>
,因为这是定义所有标准功能对象的标头,包括greater
。
我认为STL库在工具集中保持不变
他们应该。但是标题允许包含其他标题,因此有时即使您没有包含正确的标题,也会发现某些内容可用。但你不能依赖它,正如你在这里找到的那样。始终包含您使用的所有标题。
答案 1 :(得分:2)
以下示例取自here,在Visual Studio 2012中为我正确编译和执行:
// greater example
#include <iostream> // std::cout
#include <functional> // std::greater
#include <algorithm> // std::sort
int main () {
int numbers[]={20,40,50,10,30};
std::sort (numbers, numbers+5, std::greater<int>());
for (int i=0; i<5; i++)
std::cout << numbers[i] << ' ';
std::cout << '\n';
return 0;
}
输出:
50 40 30 20 10
根据问题评论和上面的示例,您需要包含<functional>
,而不是<functional.h>
。