我有一个向量,其中有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
循环的方式使用循环,因为迭代器永远不会变得高级。
我会尝试以下方法:
auto vector = adminTObj.getVectorAdministrator();
auto first = std::find(vector.begin(), vector.end(), start);
while(first != vector.cend()) {
if(*first != end) {
std::cout << *first << std::endl;
} else break;
}
像您的代码一样,它假定向量已排序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句