一个向量可以接管C ++中的另一个向量

时间:2015-10-30 19:15:25

标签: c++ vector

查看以下代码:

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

接管另一个向量意味着我不想复制它,就像使用像第一部分一样的指针;有点像移动构造函数; 有谁可以帮助我?

1 个答案:

答案 0 :(得分:3)

如果你想让一个向量“接管”另一个向量,请使用std::swap

std::vector<int> v1, v2;
std::swap(v1, v2); 

这样你的载体就可以用不必要的副本交换数据。

LIVE DEMO