STL中vector排序问题
这是我的排序代码,在主函数main()中排序正常,可以按升序排序,但是如果放到定义的排序函数中这段代码怎么就不起作用,输出没有排序的序列,请高手解释一下,是什么问题?
stl vector c++
int len=v.size();
for(int j=0;j<len;j++)
{
for (i=0;i<len-j-1;i++)
{
if (v[i]>v[i+1])
{
temp=v[i];
v[i]=v[i+1];
v[i+1]=temp;
}
}
}
[解决办法]
函数发上来看看,不会是传值排序的副本吧。
[解决办法]
可以直接用
sort();
if (!v.empty())
sort(&v[0], &v[v.size()-1]);
[解决办法]
不知道你出于什么目的用这种写法
用sort的话应该是sort(v.begin(), v.end());吧,这样也不需要判断是否为空
你的v.size()-1根本就是错的
[解决办法]
传参是不是有问题,没传指针或引用类型。
[解决办法]
既然用了STL,就直接用STL的排序函数,没必要自己写,除非对非常庞大的数据进行排序,要优化。
[解决办法]
一时脑子短路 把 sort 当c 接口用了
sort(begin, end) 即可