为什么sort()函数对以下字符数组的行为有所不同
Why does sort() function behave differently for following character arrays?
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
超载以拿指针或迭代器,如果您提供的东西都不可用。该代码甚至不应该编译,因此,如果这样做,您需要更新编译器。
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 按字符值访问int数组
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 移动二维数组中的字符
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- C++ 带结构的数组字符
- 数组字符包含量超出预期
- 读取文件并添加到数组字符
- 如何在Qt中更改或替换数组字符
- 为什么编译器不在参数中传递数组字符 *arr[] 的大小?
- 井字棋数组字符错误
- 分割数组字符