这里有很多类似的问题,但我并没有真正找到任何可以回答我问题的问题。
我有一个向量向量作为类的属性。另一个属性是bucket_count
。我想将矢量矢量初始化为bucket_count
的大小,然后将其中的每个矢量初始化为单个""。
目前,我有
class QueryProcessor {
private:
int bucket_count;
// store all strings in one vector
vector<vector<string> > hash_table(bucket_count);
但这不会编译(抛出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;
}
}
.
.
.
我认为这可能是由于没有初始化向量,因此上面的问题。
编辑:忘了陈述我想要一种没有for循环的方法
答案 0 :(得分: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))
{
}