gpt4 book ai didi

c++ - 我的代码中出现运行时错误的可能原因是什么?

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

又是我。在下面为我的程序获取运行时错误。我正在运行这段代码C++ 5.3.0 - GNU C++ 编译器选项:-lm -lcrypt -O2 -pipe -DONLINE_JUDGE

我的代码是....

#include <iostream>
#include <string>
#include <queue>
#include <map>
#include <vector>

using namespace std;



struct myString{
string inputString;
string lowerString;
string key;

myString(string str)
: inputString(str)
{
priority_queue<char> q;
lowerString = "";
for(int i=0;i<str.length();i++){
char ch = tolower(str[i]);
lowerString += ch;
q.push(ch);
}
key = "";
while(!q.empty()){
key += q.top();
q.pop();
}
}
};
struct CompareString {
bool operator()(myString const& ms1, myString const& ms2)
{
string s1 = ms1.inputString;
string s2 = ms2.inputString;

bool result = true;
int minLen = s1.length();
if(minLen > s2.length())
minLen = s2.length();

for(int i=0;i<minLen;i++){
if(isupper(s1[i]) && isupper(s2[i])){
if(s1[i] < s2[i]){
return false;
}else if(s1[i] > s2[i]){
return true;
}
}else if(isupper(s1[i])){
return false;
}else if(isupper(s2[i])){
return true;
}else if(s1[i] < s2[i]){
return false;
}else if(s1[i] > s2[i]){
return true;
}
}
return s2.length() > s1.length();
}
};


int main(){
string str;
priority_queue<myString, vector<myString>, CompareString> sortedInput;
map<string,int> presenceCount;
while((cin >> str), str != "#"){
myString ms(str);
sortedInput.push(ms);

map<string, int>::iterator it = presenceCount.find(ms.key);
if(it == presenceCount.end()){
presenceCount.insert(make_pair(ms.key,1));
}else {
it->second++;
}
}

while(!sortedInput.empty()){
myString ms = sortedInput.top();
map<string, int>::iterator it = presenceCount.find(ms.key);
if(it->second <= 1)
cout << ms.inputString << endl;
sortedInput.pop();
}

return 1;
}

我正在学习 C++。并尝试解决一些 uva 问题。现在我正在尝试问题编号 156 - Ananagrams有人请帮助我理解为什么我在这里遇到运行时错误??

最佳答案

在没有任何输入的情况下运行此代码以 std::bad_alloc 结尾.

这让我知道您读取的数据不正确,所以我发现了这一行:

while((cin >> str), str != "#")

这不符合您的预期。逗号运算符被评估为右侧表达式的结果。因此,当没有读取时,str 为空 str != "#" 始终为真,循环永不结束。

像这样修复它:

while((cin >> str) && str != "#")

我没有检查你的代码中是否还有其他错误。

关于c++ - 我的代码中出现运行时错误的可能原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57693725/

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