这是我的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
}
}
现在很明显它不起作用,但我能做些什么呢?谢谢
答案 0 :(得分:5)
那是因为curr
是一个迭代器,你需要一些与PC
进行比较的东西。要获得迭代器指向的引用,你只需要取消引用它(就像它是一个指针,而不是巧合):
while (*curr != mypc2) {
我不确定你在循环中计划做什么,但如果你想要的只是找到mypc2
,你可以使用std::find
:
std::list<PC>::iterator it = std::find(my_group.begin(),
my_group.end(),
mypc2);