将迭代器复制到容器中(包含指向typedef的指针)?

时间:2013-04-24 16:04:33

标签: c++ iterator typedef

我有一个用户定义的类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,尽管编译器都不接受这些。

1 个答案:

答案 0 :(得分:0)

你需要尊重i吗?我不认为你这样做,它不是一个指针

更改

compare->first = i->first;

compare->first = i.first;

等等