Я наткнулся на этот проект GitHub.
Хотя я не согласен с кодом в целом, я не могу понять строку:
QProcess *p;
и p=*it;
Я ошибаюсь, когда мне кажется, что создание нового указателя совершенно избыточно, или есть какая-то цель, которую я упускаю, например, с точки зрения производительности?
#define VM_COUNT 202
cout << "Creating process objects" << endl;
for(int i=0;i<VM_COUNT; i++)
vms.push_back(new QProcess(parent));
cout << "Processes created. Type 'asdf' or someting to start them...";
string s;
cin >> s;
cout << "Starting processes" << endl;
QProcess* p; // this <------
QVector<QProcess*>::Iterator it;
for(it=vms.begin(); it!=vms.end(); ++it){
p=*it; // this <------
p->start(command,args); // this <------
}
Я бы просто пошел с:
for(it=vms.begin(); it!=vms.end(); ++it)
{
(*it)->start(command,args); // ty Mike
}
for (auto p : vms) p->start(command, args)
- person tux3   schedule 07.03.2015[]
. Но да, в данном случае это QVector. - person deW1   schedule 07.03.2015(*it)->
, а неvms[it]->
, но да, в этом конкретном цикле нет особой необходимости в дополнительной переменной. Может быть, автор любит указатели. - person Mike Seymour   schedule 07.03.2015p
, скорее всего, не имеет значения. Компилятор должен сгенерировать код, который извлекает указатель и где-то его сохраняет. Что будет, скорее всего, в реестре. Таким образом, будетp
независимо от того, заботитесь вы об этом или нет. Это просто пустая трата времени, чтобы написать это явно. Возможно, автор не знал, как написать(*it)->start(...);
... - person Kuba hasn't forgotten Monica   schedule 08.03.2015