c++ - 带有二进制索引树的字符串查询

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

我想使用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/

相关文章:

c++ - 为什么编译器不选择 `forward`的右值引用版本?

c++ - 不存在类c++的默认构造函数。

MySQL:强制查询在WHERE子句中使用带有局部变量的索引

algorithm - RMQ使用两个fenwick树(二叉索引树)

algorithm - 使用二进制索引树(Fenwick 树)解决范围最小查询

C++ 捕获错误并退出函数

c++ - 从文本文件中检测有向图中的循环

algorithm - 四叉树 O(N) 的最坏情况复杂度如何?

java - GSS1 -SPOJ - 线段树 TLE

c++ - 如何使用线段树计算数组中的反转次数