使用C ++迭代器访问元素

时间:2015-04-24 02:51:43

标签: c++ list iterator

这是我的main方法的代码,应该很清楚我试图让迭代器按名称访问元素

#include <iostream>
#include <list>
#include "PC.h"
#include "SunServer.h"

using namespace std;

int main(){
    PC mypc1("John", "645.22.55.34", 128, "admin");
    PC mypc2("Mike", "645.22.55.34", 128, "admin");
    PC mypc3("Rick", "645.22.55.34", 128, "admin");
    PC mypc4("Bill", "645.22.55.34", 128, "admin");

    list<PC> my_group;

    my_group.push_front(mypc1);
    my_group.push_front(mypc2);
    my_group.push_front(mypc3);
    my_group.push_front(mypc4);
    list<PC>::iterator curr = my_group.begin();

    while (curr != mypc2){
        // do something
    }

}

现在很明显它不起作用,但我能做些什么呢?谢谢

1 个答案:

答案 0 :(得分:5)

那是因为curr是一个迭代器,你需要一些与PC进行比较的东西。要获得迭代器指向的引用,你只需要取消引用它(就像它是一个指针,而不是巧合):

while (*curr != mypc2) {

我不确定你在循环中计划做什么,但如果你想要的只是找到mypc2,你可以使用std::find

std::list<PC>::iterator it = std::find(my_group.begin(),
                                       my_group.end(),
                                       mypc2);