2017-04-04 5 views
1

ここにはこれに似た疑問がたくさんありますが、私の質問に特に答えられるものは実際には見つかりませんでした。ベクトルのベクトルを初期化する(外側のベクトルと内側のベクトルの両方)

私はクラスの属性としてベクトルのベクトルを持っています。別の属性はbucket_countです。私はベクトルのベクトルをbucket_countのサイズに初期化し、その中の各ベクトルを単一の ""に初期化したいと思います。

現在、私は

class QueryProcessor { 
private:  
    int bucket_count; 
    // store all strings in one vector 
    vector<vector<string> > hash_table(bucket_count); 

を持っているが、これはコンパイルうまくならば、最終的に障害をSEGすることを削除(error: unknown type name 'bucket_count'をスロー)

コンパイルされません。私は、デバッガでそれをトレースしてきたし、それは私はそれが故に問題上記、原因のベクトルを初期化しないように、おそらくだと思う

. 
. 
. 
} else if (query.type == "add") { 
       // Check if string already in table 
       for (int i = 0; i < hash_table[hash].size(); i++) { // throws EXEC_BAD_ACCESS here 
        if (hash_table[hash][i] == query.s) { 
         return; 
        } 
       } 
. 
. 
. 

ここにあるように思えます。

EDIT:私はクラス定義でループ

+0

コンストラクタで初期化? ';開始時 –

+0

、各々がゼロ要素を有することができる – mcansado

答えて

3

用せずにそれを行う方法を望んでいた述べることを忘れ、vector<vector<string>> hash_table(bucket_count);bucket_countを取り、vector<vector<string>>を返す関数を宣言します。あなたは `ベクトル `ごとたいどのように多くの要素

QueryProcessor:: QueryProcessor(int count) 
    : bucket_count(count), 
     hash_table(bucket_count, vector<string>(1)) 
{ 
} 
+0

か'ベクトル<ベクトル> hash_table =ベクトル<ベクトル>(bucket_count、ベクター(1))(Iは 'プログラムとしてpush_back'が実行されます) – juanchopanza

関連する問題