这是我的主要方法的代码,很明显,我正在尝试使迭代器按名称访问元素
#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);