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

Hun*_*ton 0 c++ iterator list

这是我的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
    }

}
Run Code Online (Sandbox Code Playgroud)

现在很明显它不起作用,但有什么我可以做的,这相当于这个?谢谢

Bar*_*rry 5

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

while (*curr != mypc2) {
Run Code Online (Sandbox Code Playgroud)

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

std::list<PC>::iterator it = std::find(my_group.begin(),
                                       my_group.end(),
                                       mypc2);
Run Code Online (Sandbox Code Playgroud)