lau*_*ura 1 c++ qt iterator list
我正在遍历列表,我想使用const_iterator.但我不知道该怎么做!到现在为止我使用了iterator并以这种方式实现了我的功能.任何人都可以帮我使用const_iterator吗?
void MainWindow::populate(const QList<Vehicle> &vehicles)
{
int j = 0;
QListIterator<Vehicle> iter(vehicles);
while(iter.hasNext()){
Vehicle car = iter.next();
//set car
QString makeAndModel = car.getGeneralData().getMake() + car.getGeneralData().getModel();
QStandardItem *mAndM = new QStandardItem(QString(makeAndModel));
mAndM->setEditable(false);
model->setItem(j,0,mAndM);
//set type
QStandardItem *type = new QStandardItem(QString(car.getGeneralData().getType()));
type->setEditable(false);
model->setItem(j,1,type);
//set mileage
QString mileageString = QString::number(car.getGeneralData().getMileage());
QStandardItem *mileage = new QStandardItem(QString(mileageString));
mileage->setEditable(false);
model->setItem(j,2,mileage);
//set year
QString yearString = QString::number(car.getGeneralData().getYear());
QStandardItem *year = new QStandardItem(QString(yearString));
year->setEditable(false);
model->setItem(j,3,year);
//set registration
QString regString = VehicleHelper::convertBoolToString(car.getRegistration().isRegistered());
QStandardItem *regDate = new QStandardItem(QString(regString));
regDate->setEditable(false);
model->setItem(j,4,regDate);
j++;
}
}
Run Code Online (Sandbox Code Playgroud)
用于迭代QList的一些其他变体:
使用ConstIterator/const_iterator:
QList<Vehicle>::ConstIterator it = vehicles.constBegin();
for ( ; it != vehicles.constEnd(); ++it ) {
const Vehicle& vehicle = *it;
...
}
Run Code Online (Sandbox Code Playgroud)
Q_FOREACH(相当于foreach):
Q_FOREACH (const Vehicle& vehicle, vehicles) {
...
}
Run Code Online (Sandbox Code Playgroud)
或者以STL pre-C++ 11的方式做到:
std::for_each(vehicles.begin(), vehicles.end(), SomeFunction())
Run Code Online (Sandbox Code Playgroud)
其中SomeFunction是一元函数或函数,将Vehicle作为参数.
如果您可以使用C++ 11功能(取决于您想要支持的编译器),您可以使用基于范围的for循环:
for ( auto vehicle : vehicles ) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8704 次 |
| 最近记录: |