初始化另一个变量或反复使用原始变量

Joã*_*ira 0 c++ memory-management

在制作这个节目期间,我发生了很多事情,我觉得最好问问你们.

例如,如果我有一个调用向量的特定结构的循环,那么更好地反复调用向量,如下所示:

FP_list[n].callsign=...
FP_list[n].de_airport=...
FP_list[n].ar_airport=...;
FP_list[n].aircraft_type=...
FP_list[n].trueairspeed=...
FP_list[n].FL_route.push_back(Aircraft.GetClearedAltitude());
FP_list[n].last_WP=...
FP_list[n].next_WP=...
Run Code Online (Sandbox Code Playgroud)

...

或者声明一个临时变量并从这一点开始使用它,如下所示:

FP temp=FP_list[n];
temp.callsign=...
...
temp.next_WP=...
Run Code Online (Sandbox Code Playgroud)

哪一个在内存消耗和运行时间方面更好?

先感谢您

Dan*_*vil 5

如果FP_liststd::vector或类似的,你可以这样做:

FP& p = FP_list[n];
 ^^^ use a reference
p.callsign = ...;
p.de_airport = ...;
p.ar_airport = ...;
Run Code Online (Sandbox Code Playgroud)

此代码使用引用来访问数据.引用使您可以直接访问它引用的元素.它的工作方式有点像指针.现在你只需要调用operator[]一次,你的代码就会更加紧凑.

如注释中所述,请注意,如果对向量本身进行更改,引用可能会失效,例如添加或删除元素.

这假设您实际上想要更改存储在向量中的内容.如果您不想更改它们,则必须创建副本:FP p = FP_list[n];.

  • @JoãoPereira,如果你做`FP temp = FP_list [n]`,你实际上是在创建一个临时对象.但是,@ Danvil建议使用引用指向相同的`FP_list [n]`对象,这样就可以保存向量的'nth'元素的引用.此外,它看起来更干净. (2认同)