代码的设计是这样的:
std::list<std::string> core_data;
...<filling this list up during the application workflow
....
while (<some condition>) {
std::list<std::string> temp_data;
//... <some logic to build temp_data
// ... based on the elements from core_data
// ...
// replace core_data with temp_data for next iteration
// in this point core_data is already empty
core_data = temp_data;
}
使用temp_data分配core_data的最有效方法是什么?
这种方式是否正确?更有效吗?
core_data = std::move(temp_data);
答案 0 :(得分:2)
说
field($model, 'cogn_ragsoc')->textInput(['maxlength' => true,'class'=>'form-control formtesto','onfocus'=>'test()']) ?>
。
答案 1 :(得分:0)
是的,core_data = std::move(temp_data);
效率更高(O(1)
)而非core_data = temp_data
(O(temp_data.size()
)。如果您在分配后不关心temp_data
的内容,请使用它。
虽然移动分配很可能通过swap
实现,正如Toby Speight在评论中正确指出的那样,无论如何它更具表现力:代码的读者不必猜测为什么你交换了内容以及如何在代码中进一步使用temp_data
。