C++ c++;字符串,通过引用传递会从编译器生成错误 void gp(向量和res、字符串str、int l、int r、int n){ 如果(l==n){ 字符串右=字符串(n-r’); str+=右; res.推回(str); 返回; } gp(res,str+'(',l+1,r,n); 如果(l>r){ gp(res,str+'),l,r+1,n); } } 向量生成器属性(int n){ 向量res; gp(res,“”,0,0,n); 返回res; }
对于此代码 如果我把第一行改成C++ c++;字符串,通过引用传递会从编译器生成错误 void gp(向量和res、字符串str、int l、int r、int n){ 如果(l==n){ 字符串右=字符串(n-r’); str+=右; res.推回(str); 返回; } gp(res,str+'(',l+1,r,n); 如果(l>r){ gp(res,str+'),l,r+1,n); } } 向量生成器属性(int n){ 向量res; gp(res,“”,0,0,n); 返回res; },c++,C++,对于此代码 如果我把第一行改成 void gp(vector<string>& res, string str, int l, int r, int n){ if(l == n) { string right = string( n-r, ')'); str += right; res.push_back(str); return; } gp(res, str+'(', l+1, r,n)
void gp(vector<string>& res, string str, int l, int r, int n){
if(l == n) {
string right = string( n-r, ')');
str += right;
res.push_back(str);
return;
}
gp(res, str+'(', l+1, r,n);
if (l > r) {
gp(res, str+')', l, r+1,n);
}
}
vector<string> generateParenthesis(int n) {
vector<string> res;
gp(res, "", 0, 0, n);
return res;
}
void gp(向量和res、字符串和str、int l、int r、int n){
没有用于调用的匹配函数
'解决方案::gp(标准::向量>&,
std::basic_string,int,int&,int&)'
我的问题是,为什么我不能通过引用传递这个std::字符串
谢谢!您的字符串实际上是一个
常量字符*
,调用函数时,您正在从该常量字符*
构造一个右值字符串,但您的函数需要一个左值,因为引用不是常量。这将起作用:
void gp(vector<string>& res, string& str, int l, int r, int n){
string mystring("");
gp(res, mystring, 0, 0, n);