为什么 std::greater 不再是 Visual Studio 2012 中 std 命名空间的一部分?我现在需要包括<functional>
我认为 STL 库在工具集中保持不变
为什么 std::greater 不再是 Visual Studio 2012 中 std 命名空间的一部分?我现在需要包括<functional>
我认为 STL 库在工具集中保持不变
为什么 std::greater 不再是 Visual Studio 2012 中 std 命名空间的一部分?
如果是这样的话,我会感到非常惊讶。
我现在需要包括
<functional.h>
不,您需要包含<functional>
,因为这是定义所有标准函数对象的标头,包括greater
.
我认为 STL 库在工具集中保持不变
他们应该是。但是标题可以包含其他标题,因此有时即使您没有包含正确的标题,您也会发现某些内容可用。但是你不能依赖它,就像你在这里找到的那样。始终包含您使用的东西所需的所有标题。
以下示例取自此处,在 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>
。