C++ 基于二叉索引树的字符串查询

C++ 基于二叉索引树的字符串查询,c++,segment-tree,fenwick-tree,binary-indexed-tree,C++,Segment Tree,Fenwick Tree,Binary Indexed Tree,我想使用Fenwick树对字符串进行范围查询。但是我的代码出了问题。 串联是一个错误 Eror为:[错误]与“运算符+=”不匹配(操作数类型为“std::vector>”和“std::string{aka std::basic_string}”) 给定一个字符串s,我想将该字符串存储在这棵fenwick树中。 e、 g.s=abcdef,在位上它应该像(上下)ab-c abcd-e abcd-ef 向量位[100005]; int n; void BI(整数x,字符串c) { 对于(;x>n;

我想使用Fenwick树对字符串进行范围查询。但是我的代码出了问题。 串联是一个错误 Eror为:[错误]与“运算符+=”不匹配(操作数类型为“std::vector>”和“std::string{aka std::basic_string}”) 给定一个字符串s,我想将该字符串存储在这棵fenwick树中。
e、 g.s=abcdef,在位上它应该像(上下)ab-c abcd-e abcd-ef

向量位[100005];
int n;
void BI(整数x,字符串c)
{
对于(;x>n;
字符串s;
对于(int i=1;i>s;
BI(i,s);
}
}
这个

不要放在一起。你有一个字符串向量数组(基本上是二维矩阵)。你正试图将字符串
c
添加到
位[x]
的向量中。你的编译错误应该告诉你这一点

您可能无意创建字符串向量数组。要创建大小为100005的字符串向量,请执行以下操作:

vector<string> BIT(100005);
矢量位(100005);

i、 e.括号,而不是方括号。

不清楚这是在处理什么数据,也不清楚输出应该是什么。例如,s=abcdef,在位上它应该像ab-c abcd-e efIsn不是
std::vector y[n]
一个c风格的向量数组?为什么不是
std::vector
?不理解你的树格式。你的意思是“从上到下”,对吗?但是什么是空格,什么是破折号?可以用堆格式写吗,例如a、ab、c、abcd、null、null、e等。空格在两个连续的深度之间,破折号表示父子关系
vector<string> BIT[100005];
BIT[x]+=c;
vector<string> BIT(100005);