0&&A[i-1]A[j];j++) ;//空语句 交换(A[i-1],A[j-1]);//交换两个条目中的值 字符串子行=A.substr(i,n-i); 子行=反向(子行,n-i); A=A.substr(0,i-1)+子线; 返回A; } 无效掉期(内部和a、内部和b) { 内部温度=b; b=a; a=温度; } 字符串反转(字符串k,整数长度) { 对于(int m=0;m,c++,function,debugging,C++,Function,Debugging" /> 0&&A[i-1]A[j];j++) ;//空语句 交换(A[i-1],A[j-1]);//交换两个条目中的值 字符串子行=A.substr(i,n-i); 子行=反向(子行,n-i); A=A.substr(0,i-1)+子线; 返回A; } 无效掉期(内部和a、内部和b) { 内部温度=b; b=a; a=温度; } 字符串反转(字符串k,整数长度) { 对于(int m=0;m,c++,function,debugging,C++,Function,Debugging" />

错误:对';的调用没有匹配函数;反向';:已忽略候选模板:推断参数的冲突类型 我编写了下面的C++代码来生成输入字符串的下一个逆字母表顺序。然而,我得到的错误是:调用“reverse”时没有匹配函数:忽略候选模板:推断出参数的冲突类型 “_BidirectionalIterator”('std::_1::basic_string'vs.int') 反向(首先是双向运算符,最后是双向运算符)。 我无法理解错误消息,也不知道如何调整它。有人能帮我吗?谢谢 #include<iostream> #include<string> using namespace std; string gen(string A,int n){ int i, j; for(i= n-1;(i > 0 && A[i-1]<A[i]);i--) ; // empty statement if (i == 0) return 0; for (j = i+1; j < n && A[i-1] > A[j]; j++) ; // empty statement swap(A[i-1],A[j-1]); // swap values in the two entries string subline =A.substr(i,n-i); subline=reverse(subline,n-i); A=A.substr(0,i-1)+subline; return A; } void swap(int &a,int &b) { int temp=b; b=a; a=temp; } string reverse(string k,int length) { for(int m=0;m<length/2;m++) { char temp=k[length-1-m]; k[length-1-m]=k[m]; k[m]=temp; } return k; } int main(void) { cout<<"Please enter a string"<<endl; string arrayperm; cin>>arrayperm; int length=arrayperm.length(); string newone=gen(arrayperm,length); cout<<"The new array is: "<<newone<<endl; return 0; } #包括 #包括 使用名称空间std; 字符串gen(字符串A,int n){ int i,j; 对于(i=n-1;(i>0&&A[i-1]A[j];j++) ;//空语句 交换(A[i-1],A[j-1]);//交换两个条目中的值 字符串子行=A.substr(i,n-i); 子行=反向(子行,n-i); A=A.substr(0,i-1)+子线; 返回A; } 无效掉期(内部和a、内部和b) { 内部温度=b; b=a; a=温度; } 字符串反转(字符串k,整数长度) { 对于(int m=0;m

错误:对';的调用没有匹配函数;反向';:已忽略候选模板:推断参数的冲突类型 我编写了下面的C++代码来生成输入字符串的下一个逆字母表顺序。然而,我得到的错误是:调用“reverse”时没有匹配函数:忽略候选模板:推断出参数的冲突类型 “_BidirectionalIterator”('std::_1::basic_string'vs.int') 反向(首先是双向运算符,最后是双向运算符)。 我无法理解错误消息,也不知道如何调整它。有人能帮我吗?谢谢 #include<iostream> #include<string> using namespace std; string gen(string A,int n){ int i, j; for(i= n-1;(i > 0 && A[i-1]<A[i]);i--) ; // empty statement if (i == 0) return 0; for (j = i+1; j < n && A[i-1] > A[j]; j++) ; // empty statement swap(A[i-1],A[j-1]); // swap values in the two entries string subline =A.substr(i,n-i); subline=reverse(subline,n-i); A=A.substr(0,i-1)+subline; return A; } void swap(int &a,int &b) { int temp=b; b=a; a=temp; } string reverse(string k,int length) { for(int m=0;m<length/2;m++) { char temp=k[length-1-m]; k[length-1-m]=k[m]; k[m]=temp; } return k; } int main(void) { cout<<"Please enter a string"<<endl; string arrayperm; cin>>arrayperm; int length=arrayperm.length(); string newone=gen(arrayperm,length); cout<<"The new array is: "<<newone<<endl; return 0; } #包括 #包括 使用名称空间std; 字符串gen(字符串A,int n){ int i,j; 对于(i=n-1;(i>0&&A[i-1]A[j];j++) ;//空语句 交换(A[i-1],A[j-1]);//交换两个条目中的值 字符串子行=A.substr(i,n-i); 子行=反向(子行,n-i); A=A.substr(0,i-1)+子线; 返回A; } 无效掉期(内部和a、内部和b) { 内部温度=b; b=a; a=温度; } 字符串反转(字符串k,整数长度) { 对于(int m=0;m,c++,function,debugging,C++,Function,Debugging,如果将反向函数移到文件顶部并将其嵌套在命名空间中,则可以编译代码,例如: namespace oops{ string reverse(string k, int length) { for (int m = 0; m < length / 2; m++) { char temp = k[length - 1 - m]; k[length - 1 - m] = k[m];

如果将反向函数移到文件顶部并将其嵌套在
命名空间中,则可以编译代码,例如:

namespace oops{
    string reverse(string k, int length)
    {
        for (int m = 0; m < length / 2; m++)
        {
            char temp = k[length - 1 - m];
            k[length - 1 - m] = k[m];
            k[m] = temp;
        }
        return k;
    }
}

可能重复为什么人们坚持重写
std::swap
(糟糕)。不要说
使用命名空间std;
可能会与冲突。如果
使用命名空间std;
,然后定义
交换
反向
这两个在标准库中定义的函数,则会导致问题。但更重要的是,如果在定义之前使用
反向
,请参阅我的链接ab爱。我的眼睛!请看这个:。
#include<iostream>
#include<string>
#include<algorithm>

using namespace std;

int main(void)
{
    string arrayperm = "Lorem ipsum";
    string newone(arrayperm.size(), '\0');

    reverse_copy(arrayperm.begin(), arrayperm.end(), newone.begin());

    cout << "The new array is: " << newone << endl;
    return 0;
}