【发布时间】:2018-11-11 21:23:11
【问题描述】:
谁能告诉我为什么 std::sort 会出现这种意外行为。
此代码给出运行时错误
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
inline bool compare(string a, string b){
return a.size() <= b.size();
}
int main(){
int n = 100;
string a = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
vector<string>v;
for(int i=0; i<n; i++){
v.push_back(a);
}
sort(v.begin(), v.end(), compare);
}
但是当我用 return a.size() < b.size(); 替换 return a.size() <= b.size(); 时,它工作得很好。
【问题讨论】:
-
请添加您在使用
return a.size() <= b.size();时遇到的错误。您甚至可以通过搜索得到答案;)
标签: algorithm sorting c++11 runtime-error std