【发布时间】:2014-07-17 17:03:58
【问题描述】:
我有一个包含 4 个对象的向量。该对象包含一个名为人员编号的属性。系统提示用户输入 2 个输入来搜索向量。 输入编号1:起点(应给出人员编号) 输入编号2:终点(应给出人员编号)
例如,如果用户将输入编号 1 作为 Ad0,输入编号 2 作为 Ad2。 系统应定位人员编号为 Ad0 的对象在向量中的位置,然后开始将所有值显示到屏幕上,直到找到终点,即输入编号 2。因此,当系统找到人员编号为 Ad2 的对象时它应该停止迭代。
为了实现这一点,这就是我所做的:-
cout<<"Enter Staff number Start Point"<<endl;
cin>>start;
cout<<"Enter Staff number End Point"<<endl;
cin>>end;
if(start.find("Ad")!= std::string::npos && end.find("Ad")!= std::string::npos) {
for(Administrator iter: adminTObj.getVectorAdministrator()) {
if(iter.getStaffNumber()==start) {
//checks for the staff number
while(iter.getStaffNumber()==end) {
//if found loop the vector until it meets staff number which ends the range
cout<<iter.toString2(iter)<<endl; //display the values
}
}
}
}
此代码仅显示一个值。我保证我正在迭代的向量中有 4 个值。例如,如果我将范围指定为“Ad0”到“Ad3”,它只显示记录“Ad0”但不显示“Ad2”。
这里似乎有什么问题?
感谢您的宝贵时间。
【问题讨论】:
-
while 的条件在第一位..
-
此外,基于范围的 for 循环不会为您提供迭代器。您可能更喜欢引用管理员而不是复制:for (Administrator& admin: ...) 或 for (auto& admin: ...)
标签: c++ loops for-loop iterator range