使用二叉索引树的字符串查询
String query with binary indexed tree
我想使用分域树对字符串进行范围查询。但是我的代码出了点问题。
串联给出错误
错误是:[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
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);
即括号,不是方括号。
我想使用分域树对字符串进行范围查询。但是我的代码出了点问题。 串联给出错误 错误是:[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 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);
即括号,不是方括号。