私は友達推薦アルゴリズムを書いていますが、一部std::pair
はC++のデータ型を使用して350のランダムな友情を保存する必要があります。私は基本的に隣接リストを使用します(ベクトルのベクトルとして実装されます)。データ型を格納するベクトルを作成しますpair<int,int>
。隣接リストからランダムな値を選択し、その友達の1つをランダムに選択します。ただし、データ型をペアとしてプッシュすることは確実ですが、反復することはできません。
考えられる理由は何でしょうか?
int FRIENDS_AND_UNFRIENDS_TO_STORE=350,randomNode=rand()%adjacencyList.size(),randomFriend;
vector< pair<int,int> >listForPR;
listForPR.resize(FRIENDS_AND_UNFRIENDS_TO_STORE*2);
for(int i=0;i<FRIENDS_AND_UNFRIENDS_TO_STORE;i++) {
while(adjacencyList[randomNode].size()<1)
randomNode=rand()%adjacencyList.size();
randomFriend=rand()%adjacencyList[randomNode].size();
listForPR.push_back(make_pair(randomNode,adjacencyList[randomNode][randomFriend]));
}
for(int i=0;i<350;i++)
cout<<"Node #"<<listForPR[i].first<<" & It's Friend: "<<listForPR[i].second<<endl;
これを追加し、!不思議なことに問題を解決しました。
for(int i=0;i<FRIENDS_AND_UNFRIENDS_TO_STORE;i++) {
while(adjacencyList[randomNode].size()<1)
randomNode=rand()%adjacencyList.size();
randomFriend=rand()%adjacencyList[randomNode].size();
pair<int,int> temp=make_pair(randomNode,adjacencyList[randomNode][randomFriend]);//added
listForPR.push_back(temp);
}