gpt4 book ai didi

c++ - cpp vector 排序运行时错误

转载 作者:行者123 更新时间:2023-11-28 00:05:48 26 4
gpt4 key购买 nike

#include <stdio.h>
#include <algorithm>
#include <string>
#include <vector>
#include <iostream>

using namespace std;
int max(int a, int b) {
return a < b ? b : a;
}
bool comp(const string &l, const string &r) {
for (int i = 0; i < max(l.length(), r.length()); i++) {
if (i >= l.length()) return false;
if (i >= r.length()) return true;
if (l[i] < r[i]) return l[i] < r[i];
}
return true;
}

int main(void) {
int N; scanf("%d", &N);
vector<string> v;
for (int i = 0; i < N; i++) {
string s; cin >> s;
v.push_back(s);
}
sort(v.begin(), v.end(), comp);
for (const string& s : v) {
cout << s;
}
cout << endl;
}

在昨天举行的Educational Codeforces Round 9中,我无法解决问题http://codeforces.com/contest/632/problem/C将排序与用户定义的函数结合使用。

我使用了包含字符串的 STL vector ,它似乎适用于某些测试用例,但它在以下测试用例中发生运行时错误。

100abccaacaacacabbbcbbabcccccacabbaccbcacabcbbbacabbbaccbbccbbbcacaabbcccaabcbbcbbbacaacabccccabccaaabcaccabccbcccbbaacaaccbbcccabccaaabcaccabccbcccbbaacaaccbbcbcccabccaaabcaccabccbcccbbaacaaccbbcccabccaaabcaccabccbcccbbaacaaccbbbccaabbbcbbbbbbcccccbcbbbbbbaccbbccbbbcacaabbcccaabcbbcbbbacaacabcbabcacbcabacccbcbabaabcaabcabacbbbbbcacccabccaaabcaccabccbcccbbaacaaccbbcaacbcbbaccacbcababbccaacabacbcabbaccbcbcbcabbcacbbbbbbbcabbcbcaccccbcbaacccaccabcbaacbaccabacbbaaa

由于 codeforces 的政策,我无法查看完整的测试输入。我该如何克服这种情况?

最佳答案

你的 comp()谓词不处理 l[i] > r[i] 的情况.所以它在比较“foo”和“boo”时返回1,在比较“boo”和“foo”时也返回1。因此,它无法实现严格的弱排序(即无法像 <= 那样行事),以及将其传递给 std::sort() 的结果。未定义。

关于c++ - cpp vector 排序运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35738538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com