"error: subscripted value is not an array, pointer, or vector",我正在使用字符串
"error: subscripted value is not an array, pointer, or vector"and I'm using a string
我正在为 zoj 1733 编写一个程序,问题出在第 8 行:
else if(x[i] == y[j])return f(i-1,j-1)+1;
为什么我不能使用"x[i]"而x是字符串?而且我不明白提示"下标值不是数组、指针或向量"。以下是我的代码:
#include <iostream>
using namespace std;
string x,y;
int f(int i,int j){
int x,y;
if(i==0 || j==0)return 0;
else if(x[i] == y[j])return f(i-1,j-1)+1;
else {
x=f(i-1,j);
y=f(i,j-1);
if(x>y)return x;
else return y;
}
}
int main(int argc, char *argv[]) {
int i,j;
while(cin>>x>>y){
i=x.size();j=y.size();
cout<<f(i,j)<<endl;
}
return 0;
}
将x
和y
声明为字符串全局变量,也声明为整数局部变量。当您在函数内访问它们时,它会考虑整数版本,因为它们的范围更近。更改其中任何一个的名称,它应该可以正常工作。
编辑:通过"它们中的任何一个",我的意思是更改全局变量或局部变量的名称,而不是x或y:)
您还可以使用::x
和::y
引用函数内的全局变量。这将通知编译器访问全局变量,但我真的建议只更改变量名称。
相关文章:
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 有没有办法将字符串添加到 Vector 中,但前提是它尚不存在?->C++
- 连接和压缩标准::vector<std::字符串的最佳方法>
- C++ 无法将 std::vector<BYTE> 转换为字符串或字符数组
- 如何在C++中处理多维字符串 VECTOR 的字符?
- 如何检查 std::vector<std::string> 的元素是否以某个子字符串开头?
- "error: subscripted value is not an array, pointer, or vector",我正在使用字符串
- 从 vector<pair<string, int 中提取不包含 0 的字符串>>
- 如何确定字符串是否包含在 std::vector 的任何字符串中
- 检查一系列单词,形成一个文本文件,保存在字符串vector C 中
- 仅威胁唯一字符串 - 什么是更快的 vector<std::string> 或只是 std::string
- 检查 std::vector 中的字符串是否包含C++中的子字符串
- 如何将十六进制字符串分为std :: vector
- STD :: vector和std ::字符串重新分配策略
- C++ vector 中不存在的字符串成员变量
- cout错误地打印出字符串的Vector
- 无法将C风格的字符串推送到std::vector中
- std::vector中的字符串验证
- 从vector字符串中删除项
- 向vector字符串追加