查看以下代码:
vector<int> c{ 1,2,3,4 };
int *p = &c[0];
for (int i = 0; i < c.size(); i++)
{
cout << p[i];
}
我可以使用指针来接管一个向量,但是当我想要一个向量接管另一个向量时,它不起作用;
vector<int> d(c.size());
auto itd = d.begin();
auto it = c.begin();
itd = it;
for (itd; itd != d.end(); itd++)
{
cout << *itd;
}
接管另一个向量意味着我不想复制它,就像使用像第一部分一样的指针;有点像移动构造函数; 有谁可以帮助我?
答案 0 :(得分:3)
如果你想让一个向量“接管”另一个向量,请使用std::swap
:
std::vector<int> v1, v2;
std::swap(v1, v2);
这样你的载体就可以用不必要的副本交换数据。