linux下的vi怎么才能调用stl

来源:百度知道 编辑:UC知道 时间:2024/06/21 18:54:24
加了对应到头文件,可是编译不过
#include<iostream>
#include<algorithm>//sort头文件,sort不能用,说找不到匹配的函数
#include<stack>//刚发现stack能用
using namespace std;
stack<int>sta;
bool cmp(int c,int d)
{
return c<d;
}
int main()
{
int i,a[100];
for(i=0;i<5;i++)
{
cin>>a[i];
sort(a,cmp);
}
for(i=0;i<5;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}

刚发现能用c下的qsort,man不出sort的c++定义,只有系统命令到sort。那就是不支持c++的sort()?

你确定C++的sort能这么用?
MSDN中的定义:
template<class RanIt>
void sort(RanIt first, RanIt last); //--> 1)
template<class RanIt, class Pred>
void sort(RanIt first, RanIt last, Pred pr); //--> 2)
泛型排序中有C中的数组没,你还是换成vector等其他C++容器吧,或者就用qsort,这个比sort效率高
PS:你这个错误提示根本不是C++不支持sort,而是sort函数里面没有对应处理C语言的数组的部分,说了,你换成vector处理看看,不要用数组

#1 sort 泛型算法用错了
sort(begin, end, comp)

begin , end 均为iterator一般,但用指针也可以。(我理解的,iterator我感觉和指针应该属于一家人,呵呵,亲缘关系)

end指向需要排序的最后一个元素的下一个位置
所以
你要把
cin>>a[i];
sort(a,cmp);
改为
cin>>a[i];
sort(a,a+i+1,cmp); // end指向需要排序的最后一个元素的下一个位置
就对了。

你试一下 :)

#2 即使这样都对了,总感觉这个程序写的不是很好。
每次插入你都要排序,明显效率低下么。
应该是在插完最后一个元素排一次就够了

推荐 把 c++ primer 好好多看一下。 :)
我自己也水平比较烂,刚开始看c++,以前一直是C语言。

把源代码贴上来, 可能你用错了头文件, 也可能你没写using namespace std;。。。。