永发信息网

求帮忙解释下C++中std::sort()函数中的参数问题,如何得到需要排序的n数量的问题。详情请看下面:

答案:2  悬赏:0  手机版
解决时间 2021-02-03 02:33
求帮忙解释下C++中std::sort()函数中的参数问题,如何得到需要排序的n数量的问题。详情请看下面:
最佳答案
last不算的, 这是STL的惯例.
STL中的所有算法, first~last这样的参数, 都是不算在内的.

int a[4] 这样的数据排序.
参数就是 first = a last = a+4 一共4个数据, 分别是a+0, a+1, a+2, a+3
last也就是a+4不算在内.

至于内部编码, std::sort的实现是函数模板.
下面是VC编译器的源代码, 在algorithm头文件中. 这个头文件就是STL的算法库.

template class _Diff,
class _Pr> inline
void _Sort(_RanIt _First, _RanIt _Last, _Diff _Ideal, _Pr _Pred)
{ // order [_First, _Last), using _Pred
_Diff _Count;
for (; _ISORT_MAX < (_Count = _Last - _First) && 0 < _Ideal; )
{ // divide and conquer by quicksort
pair<_RanIt, _RanIt> _Mid =
_Unguarded_partition(_First, _Last, _Pred);
_Ideal /= 2, _Ideal += _Ideal / 2; // allow 1.5 log2(N) divisions

if (_Mid.first - _First < _Last - _Mid.second)
{ // loop on second half
_Sort(_First, _Mid.first, _Ideal, _Pred);
_First = _Mid.second;
}
else
{ // loop on first half
_Sort(_Mid.second, _Last, _Ideal, _Pred);
_Last = _Mid.first;
}
}

if (_ISORT_MAX < _Count)
{ // heap sort if too many divisions
_STD make_heap(_First, _Last, _Pred);
_STD sort_heap(_First, _Last, _Pred);
}
else if (1 < _Count)
_Insertion_sort(_First, _Last, _Pred); // small
}追问请问有什么理论依据吗?比如说他的内部结构中有提到啊什么的。追答这是一个 约定的惯例, STL即 C++标准模板库 里面的函数都是这么定义的.
这么定义是为了能够很好的配合标准容器来使用, 而且统一.

这样的参数都会是一个半开半闭区间[first, last), '[' 表示包括, ')'表示不包括
统一的好处就是, 你拿到一个函数, 不需要去看书, 就知道参数中的Last是不包括的.

string str = "lkijuhgtfrds";

sort(str.begin(), str.end()); // 字符串中的字符小到大排序.
// begin 和 end 迭代器所有标准容器都有. 范围就是[begin, end)追问好的,谢谢了。明天向老师解释解释。。。我就不行还会继续死掉。。。。
全部回答
last不算的,因为sort函数要求的是两个指针地址,假设,char ch[5].....;那么排序的时候就是,ch,ch+6追问关键是这样说老师不干啊。。。他要我说出原因。。。我想应该只有去查sort()的内部结构了吧?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
手机卡冲了几千块钱现在不用了可以注销吗?
躯腔的意思是什么啊?知道的请说下!
2.-4.8.-16.32.-64是按什么规律排列
办公软件利用函数做表格
怎样挑选古筝
武义捷立机电工具有限公司这个地址在什么地方
the home counties是什么意思?
修眉和绣眉有什么区别
为什么有的人吃一顿饭要几万甚至几十万,而有
耍烟九的意思是什么啊?知道的请说下!
一般说根和茎的初生结构有许多不同之处,下面
嘴唇上长泡,会流脓是怎么回事
慈禧太后西逃路上,下了一道什么命令
求安河桥 宋冬野 的空间链接
华家星宇通讯行这个地址在什么地方,我要处理
推荐资讯
星际战甲,电脑重启后掉帧,之前还好好的,断
兄弟mfc-7480d怎么样
沧兴农牧鲜奶吧NO.018这个地址在什么地方,我
上次到贵州喝到一种绿茶非常香,不记得叫什么
类似于百度传课的软件有哪些?
恒丰服务怎么去啊,有知道地址的么
红楼梦中谁的结局最好呢
大连森林动物园-熊区地址有知道的么?有点事
君鱼保境的意思是什么啊?知道的请说下!
马师烤肉地址有知道的么?有点事想过去
泰来羽毛球馆地址在哪,我要去那里办事
枝戚的意思是什么啊?知道的请说下!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?