0

我想使用 Fenwick 树对字符串进行范围查询。但是我的代码出了点问题。连接给出错误 Eror is:[Error] no match for 'operator+=' (operand types are 'std::vector >' and 'std::string {aka std::basic_string}') 给定一个字符串 s,我想要将字符串存储在这棵芬威克树中。例如 s=abcdef,在 BIT 上它应该像(上-下)a 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);
        }

    }
4

1 回答 1

1

vector<string> BIT[100005];

还有这个

BIT[x]+=c;

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

您可能并不是要制作一个字符串向量数组。要制作大小为 100005 的字符串向量,请执行以下操作:

vector<string> BIT(100005);

括号,而不是方括号。

于 2017-07-10T14:50:49.640 回答