具有二叉索引树的字符串查询

String query with binary indexed tree

本文关键字:字符串 查询 索引      更新时间:2023-10-16

我想使用 Fenwick 树对字符串进行范围查询。但是我的代码出了点问题。 串联出错 Eror 是:[错误] 与"运算符+="不匹配(操作数类型是"std::vector>"和"std::string {aka std::basic_string}"( 给定一个字符串 s,我想将字符串存储在这棵芬威克树中。 例如 s=abcdef,在 BIT 上它应该像(从上到下(一个 ab-c abcd-e abcd-ef 树结构

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);

括号,而不是方括号。