#include<iostream> #include<vector> #include<string> #include<algorithm> using namespace std; class f { private: string m; public: f (string m):m(m){} string getM() {return m;} int ifornot () { string n; n=reverse(m.begin(),m.end()); if(m==n) return 1; else return 0; } }; int main() { int i,x; vector<f>m; f p; string n; vector<string>b; while(cin>>n) { p=f(n); m.push_back(p); } x=m.size(); for(i=0;i<x;i++) { if(f(m[i].ifornot)==1) b.push_back(m[i].getM); } sort(b.begin,b.end); x=b.size(); for(i=0;i<x;i++) cout<<b[i]; return 0; } 有什么错误
时间: 2024-01-18 20:01:49 浏览: 61
使用include <iostream>时一定要加using namespace std
这段代码有一些错误:
1. `reverse()` 函数返回值为 `void`,所以在 `ifornot()` 函数中不能将其赋值给 `n`,应该直接调用 `reverse()` 函数,例如 `reverse(m.begin(),m.end())`。
2. 在 `ifornot()` 函数中,应该比较 `n` 和 `m` 的值,而不是 `m` 和 `n` 的值,因为 `n` 已经被倒置了。
3. 在调用 `getM()` 和 `ifornot()` 函数时,应该加上括号,例如 `m[i].ifornot()` 和 `m[i].getM()`。
4. 在调用 `sort()` 函数时,应该加上括号,例如 `sort(b.begin(), b.end())`。
下面是修改后的代码:
```c++
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
class f {
private:
string m;
public:
f(string m):m(m){}
string getM() {
return m;
}
int ifornot() {
string n = m;
reverse(n.begin(), n.end());
if(m == n)
return 1;
else
return 0;
}
};
int main() {
int i, x;
vector<f> m;
f p;
string n;
vector<string> b;
while(cin >> n) {
p = f(n);
m.push_back(p);
}
x = m.size();
for(i = 0; i < x; i++) {
if(m[i].ifornot() == 1)
b.push_back(m[i].getM());
}
sort(b.begin(), b.end());
x = b.size();
for(i = 0; i < x; i++)
cout << b[i] << " ";
return 0;
}
```
希望对你有帮助!
阅读全文