我有一个用户定义的类Node
,一个typedef VERTEX
,我试图通过将指针瞄准包含{{的hash_map中的元素来填充VERTEX*
的向量1}}。问题是,当我尝试将指针指向迭代器时,会出现一个错误,告诉我“迭代器类型不兼容”。这样做的正确方法是什么?
VERTEX
我也尝试过简单地使用class Node
{
public:
Node(){DEGREE = 0;}
bool HAS_OUTLINK;//using size() instead
vector <int> IN;
vector <int> OUT;
//string URL;//not strictly necessary
double PAGE_RANK;
double I_A;
int DEGREE;//referring to outdegree
};
typedef pair <int, Node> VERTEX;
void top_ten (hash_map<int, Node>& G){
vector <VERTEX*> top10;// then after some initilisation...
hash_map <int, Node>::iterator i;
for (i = G.begin(); i != G.end(); i++){
for (int j = 0; j < 10; j++){
double &temp = i->second.PAGE_RANK;
VERTEX *compare = top10[j];
if (compare->second.PAGE_RANK < temp){
compare->first = i->first;
compare->second = i->second;//where the mistake is
}
}
}
}
和compare = i
,尽管编译器都不接受这些。
答案 0 :(得分:0)
你需要尊重i
吗?我不认为你这样做,它不是一个指针
更改
compare->first = i->first;
到
compare->first = i.first;
等等