下面的程序是练习使用 sort 的, 使用deque作容器, 按从大到小进行排序,
在VC下编译无法通过:
#include <algorithm>
#include <iostream>
#include <deque>
#include <iterator>
using namespace std;
inline bool greater1(int a, int b)
{ return a>b;}
int main()
{
int a[4]={8, 4, 6, 2};
deque<int> v(a, a+4); //出错在这一行
ostream_iterator<int> it(cout,",");
copy(v.begin(), v.end(), it);
sort(v.begin(), v.end(), greater1);
copy(v.begin(), v.end(), it);
cout<<endl;
system("pause");
return 0;
}
奇怪的是, 我将deque 改为使用 vector后, 就可以正常运行了
另外, 该程序在BCB6下可以正常编译并运行, 这让我又怀疑起来是不是又是VC6对STL标准的支持有问题?
explicit deque(const A& al = A());
explicit deque(size_type n, const T& v = T(), const A& al = A());
deque(const deque& x);
deque(const_iterator first, const_iterator last, const A& al = A());
这个是msdn上的,说明vc++支持这几种构造函数
再看bcb的这个构造函数
deque (const T* first, const T* last, const Allocator& alloc _RWSTD_DEFAULT_ARG(Allocator()))
这个是vc++中所没有的,所以你写的在vc++不被支持,但是bcb中却可以通过
vc7中没有问题
vc6中却不同通过,因为vc6对c++标准兼容的太差了。
强烈建议用vc7。
VC6对于标准C++支持的太差了