2017-07-10 42 views
-1

我想使用Fenwick樹範圍查詢一個字符串。但是我的代碼出了問題。 級聯錯誤 Eror是:[Error]'operator + ='(操作數類型是'std :: vector>'和'std :: string {aka std :: basic_string}')匹配 給定一個字符串s ,我想把這個字符串存儲在這個fenwick樹中。 例如S = ABCDEF,在BIT它謹(頂部 - 底部)A AB-C ABCD-E ABCDEF 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); 
     } 

    } 
+0

目前尚不清楚這些數據正在處理什麼,也不知道輸出應該是什麼。 – tadman

+0

例如s = abcdef,在BIT上它應該像(上下)一個ab-c abcd -e abcd-ef – nRT

+1

不是'std :: vector y [n]'是一個C風格的向量數組嗎?爲什麼不是'std :: vector >'? – tadman

回答

1

vector<string> BIT[100005]; 

BIT[x]+=c; 

不要一起去。你有一系列的字符串向量(基本上是2維矩陣)。而您正試圖將字符串c添加到BIT[x]的矢量中。你的編譯錯誤應該告訴你這一點。

你可能並不想要創建一個字符串向量數組。爲了與大小100005串的向量,這樣做:

vector<string> BIT(100005); 

括號,而不是方括號。

+0

謝謝,安德魯昌,它的工作。 – nRT