为什么sort()函数对以下字符数组的行为有所不同

Why does sort() function behave differently for following character arrays?

本文关键字:数组 字符 有所不同 sort 函数 为什么      更新时间:2023-10-16
char a[] = {'t' , 'e' , 's' , 't' , 'i' , 'n' , 'g'};
sort(a,a+7);

这绝对可以。

char*a = "testing";
sort(a, a+7);

这无法运行。为什么不进行排序?

string a = "testing";
sort(a.begin(),a.end());

这很好..

string a ="testing";
sort(a , a+7);

但这失败了。这是" a"是一个C 字符串,但是为什么需要在这里使用迭代器?

char*a = "testing";
sort(a, a+7);

这失败了,因为C-string文字存储在无法编辑的内存中。它调用了未定义的行为,在大多数环境中,操作将只是失败。

string a ="testing";
sort(a , a+7);

这是一个不良的程序。std::string是一个合适的C 对象,因此,a不是char*char[]的指针。std::sort超载以拿指针或迭代器,如果您提供的东西都不可用。该代码甚至不应该编译,因此,如果这样做,您需要更新编译器。