#c #list #vector #initialization
#c #Список #вектор #инициализация
Вопрос:
Вот мой код:
...
using namespace std;
class QueryProcessor {
int bucket_count;
vector<list<string> > hash_row(bucket_count);
size_t hash_func(const stringamp; s) const {
static const size_t multiplier = 263;
static const size_t prime = 1000000007;
unsigned long long hash = 0;
for (int i = static_cast<int> (s.size()) - 1; i >= 0; --i)
hash = (hash * multiplier s[i]) % prime;
return hash % bucket_count;
}
public:
explicit QueryProcessor(int bucket_count): bucket_count(bucket_count) {}
...
и возникает эта ошибка: [Ошибка] ‘bucket_count’ не является типом.
Что не так с моим объявлением?
Ответ №1:
Что не так с моим объявлением?
Вы не можете объявить и инициализировать переменную-член подобным образом.
Вы можете объявить его как:
vector<list<string> > hash_row;
и инициализируйте элемент в конструкторе с помощью:
explicit QueryProcessor(int bucket_count): bucket_count(bucket_count),
hash_row(bucket_count) {}
Комментарии:
1. Но когда я удаляю его из любых классов, например:
2. Но когда я помещаю его из любых классов, например так: используя пространство имен std; int main(){ int n; vector<list<int> > hash(n); cin >> n; for(int i = 0; i < 10; i ) hash[0].push_front(i); for(list<int>::iterator i = hash[0].begin(); i != hash[0].end(); i ){ cout <<*i << » «; } возвращает 0; } Работает правильно!
3. Это работает, потому что вы не объявляете и не инициализируете переменную-член класса. Вы объявляете и инициализируете локальную переменную функции.