1
これはちょっと疑問に思うかもしれませんが、私はこの時点でかなり切望しています。ポインタの配列との混乱
私はポインタの配列を作成しようとしています:
struct vertex
{
std::string id;
std::string name;
int networkID;
std::vector<adjVertex> friends;
bool visited;
};
struct hobbylist
{
std::string hobby;
std::vector<vertex*> list;
};
hobbylist * hobbies[HASHMAP_SIZE];
int Graph::addUserToHobby(std::string hobby1, std::string id){
//cout << "Adding to hobby: " << hobby1 << " user: " << id << endl;
vertex *user = findVertex(id);
int collisions = 0;
// initial key is based on the first 2 characters of the hobby name
int key = (hobby1[0] + hobby1[1]) % HASHMAP_SIZE;
//cout << " initial hashmap key " << key << endl;
hobbylist *h = new hobbylist;
if(hobbies[key] == NULL){
h->hobby = hobby1;
h->list.push_back(user);
hobbies[key] = h;}
else if (hobbies[key]!=NULL){
hobbies[key]->list.push_back(user);
collisions++;}
return collisions;
}
機能を最初に実行しているとき、私はaddUserToHobby機能で他の文で最後の行でワンセグ障害を取得していますし、私は混乱しています配列が空でなければならないときに関数がelseステートメントに移動する理由は、関数が最初に実行されたときに趣味[key]はnullにする必要がありますか?さらに検査すると、関数は常にelse文を入力するので、配列の値は決してnullになりませんか?
これのためにこれについて最善の方法はありますか? –
@andrewfay配列が最初に宣言された後は、すべてを歩いて各インデックスをnullに設定することができます。あなたはhobbylist * Hobbylist [HASHMAP_SIZE] = {0} – Erix
を書くことでこれを省略することができます。実際には、私のイニシャライザですべての値をnullに設定することで、ありがとうございました! –