0 c++ string segmentation-fault
我在解决leetcode问题https://leetcode.com/problems/largest-number/时遇到以下错误。
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_M_create
Run Code Online (Sandbox Code Playgroud)
因此,我在本地运行了类似的代码,它给了我分段错误。(顺便说一句,当向量大小较小(例如 10)时,它可以毫无问题地运行。我已经阅读了解决方案,所以我知道有更好的方法来解决这个 leetcode 问题。我只是想知道这个分段错误的细微差别。
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<string> arr(100, "0");
sort(arr.begin(), arr.end(), [](string &x, string &y) {
string a = x;
string b = y;
a.append(y);
b.append(x);
int n = a.length();
for (int idx = 0; idx < n; ++idx) {
if (a[idx] != b[idx])
return a[idx] > b[idx];
}
return true;
});
}
Run Code Online (Sandbox Code Playgroud)
的第三个参数std::sort需要满足Compare命名要求,但是您的 lambda 显然违反了反自反关系的要求,即对于任何a,comp(a, a) 必须产生false,将字符串"0"作为两个参数传递会导致两者a并在循环b之前"00"并且循环完成而不返回结果而true不是所需的false.
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |