QProcess *p 行不是多余的吗?
Isn't the line QProcess *p redundant?
我偶然发现了 this 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
}
这对于代码可移植性或匹配示例时很有用。假设您找到一个使用 QProcess * p
表示 100 行的示例,然后将其应用于流程向量,当您在每个位置将 p
换成 (*iter)
时,可读性会受到影响...但是如果你在局部范围的顶部分配一个同名的变量,你会得到 readability/maintainability.
Qt 还支持多种类型的迭代器、STL 风格、Java 风格和 boost foreach
风格。我更喜欢 foreach
风格,它对我来说代码量最少,可读性最高。这似乎也是 Qt 倾向于偏爱的文档和示例。
在查看要使用的迭代器时,请务必阅读可变 v 不可变。
QList<QProcess *> listOfProcesses;
// ...
foreach(Process * p, listOfProcesses)
{
p->start();
}
顺便说一下,我可能会用 p
写一次,但在我提交或离开代码之前,我会在 Qt Creator 中做 Ctrl+Shift+R
并重命名 p
到 process
.
希望对您有所帮助。
我偶然发现了 this 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
}
这对于代码可移植性或匹配示例时很有用。假设您找到一个使用 QProcess * p
表示 100 行的示例,然后将其应用于流程向量,当您在每个位置将 p
换成 (*iter)
时,可读性会受到影响...但是如果你在局部范围的顶部分配一个同名的变量,你会得到 readability/maintainability.
Qt 还支持多种类型的迭代器、STL 风格、Java 风格和 boost foreach
风格。我更喜欢 foreach
风格,它对我来说代码量最少,可读性最高。这似乎也是 Qt 倾向于偏爱的文档和示例。
在查看要使用的迭代器时,请务必阅读可变 v 不可变。
QList<QProcess *> listOfProcesses;
// ...
foreach(Process * p, listOfProcesses)
{
p->start();
}
顺便说一下,我可能会用 p
写一次,但在我提交或离开代码之前,我会在 Qt Creator 中做 Ctrl+Shift+R
并重命名 p
到 process
.
希望对您有所帮助。