vs2005 中is_sorted函数不在<algorithm>头文件中?
我在VS2005中编写C++代码!调用了STL中的一个算法:is_sorted。编译器提示找不到标识符。请问这个函数是VS2005不支持,还是定义在别的头文件中?但是标准...
我在VS2005中编写C++代码!调用了STL中的一个算法:is_sorted。
编译器提示找不到标识符。
请问这个函数是VS2005不支持,还是定义在别的头文件中?
但是标准说这个函数要在algorithm中啊!谢谢!在线等啊~ 展开
编译器提示找不到标识符。
请问这个函数是VS2005不支持,还是定义在别的头文件中?
但是标准说这个函数要在algorithm中啊!谢谢!在线等啊~ 展开
1个回答
展开全部
很抱歉,我没有VS2005编译器,我只有VS2008和VS2010。我将下面程序运行了一下:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> ivec;
for (int i = 0; i < 10; ++i)
ivec.push_back(i);
if (std::is_sorted(ivec.begin(), ivec.end()))
cout << "Support!" << endl;
else
cout << "Not Support!" << endl;
}
发现:2010可以通过编译,2008则不行!
于是我又查了《C++标准程序》一书,发现上面也没有,初次判断is_sorted不是98标准的内容。
我又查看了最新的C++0x标准草稿N3225,果然发现了~由于我没有98标准,所以不能够断定is_sorted不是98的内容,但是我在google上的一些英文网站上得知与我预测的差不多~(虽然在一个网站上差到说SGI版本的STL有is_sorted函数,但是我在侯捷的《STL源码剖析》中仍未找到,进一步肯定了不是98标准的内容)!
所以,is_sorted是C++0x新标准里边的内容,虽然标准还没有面世,但是Visual Studio 2010已经实现了部分新标准的内容!
还有你可以在VS2005下使用另一种替换方式(如果你很像用STL来实现这一功能):
adjacent_find(begin(), end(), greater_than<T>()) == end()
来代替
is_sorted(begin(), end())
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> ivec;
for (int i = 0; i < 10; ++i)
ivec.push_back(i);
if (std::is_sorted(ivec.begin(), ivec.end()))
cout << "Support!" << endl;
else
cout << "Not Support!" << endl;
}
发现:2010可以通过编译,2008则不行!
于是我又查了《C++标准程序》一书,发现上面也没有,初次判断is_sorted不是98标准的内容。
我又查看了最新的C++0x标准草稿N3225,果然发现了~由于我没有98标准,所以不能够断定is_sorted不是98的内容,但是我在google上的一些英文网站上得知与我预测的差不多~(虽然在一个网站上差到说SGI版本的STL有is_sorted函数,但是我在侯捷的《STL源码剖析》中仍未找到,进一步肯定了不是98标准的内容)!
所以,is_sorted是C++0x新标准里边的内容,虽然标准还没有面世,但是Visual Studio 2010已经实现了部分新标准的内容!
还有你可以在VS2005下使用另一种替换方式(如果你很像用STL来实现这一功能):
adjacent_find(begin(), end(), greater_than<T>()) == end()
来代替
is_sorted(begin(), end())
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询