字符串比较返回值(Is用于对字符进行排序的应用程序?)
String Comparison return value (Is is used in applications that sorts characters ?)
当我们使用strcmp(str1, str2);
或str1.compare(str2);
时,str1<str1==str2或str1>str2。
问题是,它这样定义是出于特定的原因吗?例如,在二叉树排序算法中,我们将较小的值推送到左边的子级,将较大的值推到右边的子级。这个strcmp或字符串::compare函数似乎非常适合这一点。但是,有人使用字符串匹配来对树进行排序吗(整数索引更容易使用(?
那么,三个返回值(-1,0,1(的实际用途是什么呢。为什么它不能只返回1表示真,0表示假呢?
感谢
拥有三个返回值的目的正是它看起来的样子:一次回答所有关于字符串比较的问题。
每个人都有不同的需求。有些人有时需要一个简单的测试;strncmp
提供了这一点。有些人需要平等测试;strncmp
提供了这一点。有些人确实需要知道两条线之间的全部关系;strncmp
提供了这一点。
你绝对不希望有人写下这样的话:
if(strless(lhs, rhs))
{
}
else if(strequal(lhs, rhs))
{
}
这需要进行两次可能代价高昂的比较操作。strless
也知道它们是否相等,因为它必须到达两个字符串的末尾才能返回不小于。
哦,仅供参考:返回值不是-1或+1;它大于零或小于零。或者零,如果它们相等。
这对于了解所有三种情况都很重要的某些情况很有用。当您只关心布尔比较时,请将operator<
用于string
。
可以,但您需要多个函数来进行排序和比较。由于strcmp((返回更小、相等或更大的值,您可以很容易地使用它们进行比较和排序。
请记住,BST并不是您想要比较字符串的唯一地方。您可能需要对名称列表或类似的内容进行排序。此外,在树中使用字符串作为关键字也很常见。
正如其他人所说,将字符串与<>==进行比较是有实际目的的影响。例如指定给字符串的固定长度数字将正确解析;即:"312235423">"312235422"。在某些情况下,这是有用的。
然而,您所要求的功能,对于解决方案的true/false,仍然适用于给定的返回值。
if (-1)
{
// resolves true
}
else if (1)
{
// also resolves true
}
else if (0)
{
// resolves false
}
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 部分排序,严格弱排序,总排序,应用程序的主要区别是什么
- 字符串比较返回值(Is用于对字符进行排序的应用程序?)