c++ - 使用二叉索引树的字符串查询

标签 c++ segment-tree fenwick-tree binary-indexed-tree

我想使用 Fenwick 树对字符串进行范围查询。但是我的代码出了点问题。 串联给出错误 错误是:[错误] 不匹配“operator+=”(操作数类型为“std::vector >”和“std::string {aka std::basic_string}”) 给定一个字符串 s,我想将该字符串存储在这个分域树中。 例如s=abcdef,在 BIT 上它应该像(从上到下)a 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;

不要一起去。你有一个字符串 vector 数组(基本上是二维矩阵)。您正在尝试将字符串 c 添加到 BIT[x] 处的 vector 。您的编译错误应该告诉您这一点。

您可能并不打算制作一个字符串 vector 数组。要创建大小为 100005 的字符串 vector ,请执行以下操作:

vector<string> BIT(100005);

圆括号,而不是方括号。

关于c++ - 使用二叉索引树的字符串查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45014566/

相关文章:

c++ - Rcpp:将两个 NumericVectors 相乘,同时对其中一个进行子集化

c++ - 是否可以在其范围之外访问局部变量的内存?

algorithm - 如何在线段树中应用范围更新?

c - 查询代码意外修改数组而不是返回索引

algorithm - 计算左下象限的点数?

c++ - O(klogn) 时间算法从 Fenwick-Tree 中找到第 k 个最小元素

c++ - 一个二年级的计算机本科生能做什么在未来可能被认为是有值(value)的?

c++ - 运行调试器时,带有空格字符的程序参数被 Eclipse 破坏

algorithm - 无法解决作业(ACM-培训)