这是我的主要方法的代码,很明显,我正在尝试使迭代器按名称访问元素

#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
    }

}


现在显然不起作用,但是我能做些等同于此的事情吗?谢谢

最佳答案

这是因为curr是迭代器,并且您需要将其作为PC进行比较。要获得对迭代器所指向内容的引用,只需取消引用(就像它是一个指针一样,而不是巧合):

while (*curr != mypc2) {


我不确定您打算在循环中做什么,但是如果您只是想找到mypc2,则可以使用std::find

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

09-27 02:34