[英]std::string append segmentation fault
在解決 leetcode 問題https://leetcode.com/problems/largest-number/時遇到如下錯誤。
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_M_create
所以我在本地運行了一個類似的代碼,它給了我分段錯誤。 (順便說一句,當矢量大小較小時,它可以毫無問題地運行,例如 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;
});
}
std::sort
的第三個參數需要滿足Compare named 要求,但您的 lambda 顯然違反了反反關系的要求,即對於任何a
, comp(a, a)
必須產生false
,傳遞字符串"0"
因為這兩個參數導致a
和b
在循環之前都是"00"
並且循環完成而不返回導致true
而不是所需的false
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.