sort 和 qsort 小试

今天因为想用用stl的sort和c的qsort试试,结果发现几个需要注意的地方:

1.sort的comp函数不能直接返回strcmp(s1,s2),会程序崩掉

查了sort里面的比较函数,只能返回bool类型的true和false,而strcmp返回是{-1,0,1},这样当出现-1就不满足了,这里用if(strcmp(s1,s2)<=0) return true; 还是if(strcmp(s1,s2)<0)就看对比较函数的要求了

2.qsort不能类似sort的comp函数那样只一次解引用比较s1和s2

qsort这里不像sort能够只用一次解引用,应该是sort的comp因为是适用于容器的,那么对于传进去的参数认为是迭代器,所以会自行进行一次解引用,而qsort是直接传参数,这里就是二级指针,所以在comp中需要先转化为原本的字符型二级指针,然后再解引用才能够得到每个字符串的值

最后的代码:

int	comp1(const void *s1, const void *s2){
	return strcmp(*(char**)s1,*(char**)s2);
}
bool comp2(const char *s1, const char *s2){
	if(strcmp(s1,s2)<=0)
		return true;
	else
		return false;
}
void	sort_t(char **str,int n){
	cout<<"str is: ";
	for(int i=0;i


你可能感兴趣的:(C/C++)