ATe*_*emp 3 c++ swap copy stdvector
我有一个具有向量成员变量的类,我填写如下:
class Foo {
vector<int> v;
void g() {
vector<int> w;
// fill w
v = w;
}
};
Run Code Online (Sandbox Code Playgroud)
我的问题:临时矢量w可能变得很大,我不想付出复制结构的代价.我应该使用std :: swap而不是复制吗?我的理解是std :: swap由于vector的特化而更有效率(它只是将指针交换到堆).
Ben*_*igt 14
是的,你应该在这里交换.在C++ 11中,您也可以说v = std::move(w);.
无论哪种方式,变量w都会立即超出范围,因此其内容无关紧要,您也可以转移所有权而不是复制.
| 归档时间: |
|
| 查看次数: |
2572 次 |
| 最近记录: |