用另一个容器中的数据替换容器的内容

时间:2015-07-02 11:11:51

标签: c++ c++11 stl containers move-semantics

代码的设计是这样的:

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);

2 个答案:

答案 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_dataO(temp_data.size())。如果您在分配后不关心temp_data的内容,请使用它。

虽然移动分配很可能通过swap实现,正如Toby Speight在评论中正确指出的那样,无论如何它更具表现力:代码的读者不必猜测为什么你交换了内容以及如何在代码中进一步使用temp_data