我想使用Fenwick树来查询字符串范围。但是我的代码出了点问题。
串联错误
错误为:[错误]与'operator + ='不匹配(操作数类型为'std :: vector>'和'std :: string {aka std :: basic_string}')
给定一个字符串s,我想将该字符串存储在这棵fenwick树中。
例如s = abcdef,在位上它应该(顶部)ab-c abcd-e abcd-ef
Tree Structure
vector<string> BIT[100005];
int n;
void BI(int x,string c)
{
for(;x<=n;x+=x&-x)
{
BIT[x]+=c;
}
}
int main()
{
cin>>n;
string s;
for(int i=1;i<=n;i++)
{ cin>>s;
BI(i,s);
}
}
最佳答案
这个
vector<string> BIT[100005];
还有这个
BIT[x]+=c;
不要在一起您有一个字符串向量数组(基本上是二维矩阵)。您正在尝试将字符串
c
添加到BIT[x]
处的向量。您的编译错误应告诉您这一点。您可能并不是要对字符串向量进行数组处理。要制作大小为100005的字符串向量,请执行以下操作:
vector<string> BIT(100005);
即括号而不是方括号。
关于c++ - 带有二进制索引树的字符串查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45014566/