c++ - 需要帮助理解 sort() c++ 函数的奇怪行为
问题描述
我有一个比较器函数,它比较两个字符串,这些字符串表示没有前导零的数字,例如“123”或“5”。
bool comp(string s1,string s2){
if(s1.size()!=s2.size())
return s1.size()<s2.size();
int i=0;
while(i<s1.size() && s1[i]==s2[i])
i++;
if(i==s1.size())
return true;
return s1[i]<s2[i];
}
除了字符串 nums 的向量,我还使用如下的 sort() 函数:
sort(nums.begin(),nums.end(),comp);
这个函数将适用于这个向量:
{"5","5","5","5","5","5","5","5","5","5","5","5","5","5","5","5"}
但是,如果我在向量中再添加一个“5”,它会抛出这个:
在抛出 'std::length_error' 的实例后调用终止
什么():basic_string::_M_create
这里发生了什么?
解决方案
推荐阅读
- android - 通过 Android 项目的源代码控制共享代码样式时遇到问题 (Android Studio)
- sql - 限制 SQL Server 中动态 SQL 的执行时间
- react-native - 我不能创建一个 react-native 项目?
- delphi - 升级 Indy 库以使用最新的 OpenSSL 库
- c# - 匹配第二个实例
- c++ - Cmake:包含目录-父目录
- sharepoint - CSOM 为 SharePoint 列表上的组授予编辑权限
- arrays - 如何从 Postgres 函数返回新创建的 ids 数组?
- angular - PrimeNG ConfirmDialog 中的 acceptLabel、acceptVisible 不起作用
- sql - 如何在不重复行的情况下在同一字段的同一表上获取数据