c++ - 重命名 vector 而不是复制它

标签 c++ stl reference rename swap

我想做以下事情。但不知道如何:

    //have two vectors: vector1 (full of numbers), vector2 (empty)
    //with vectors, I mean STL vectors
    //outer loop
    {
    //inner loop 
    {
    //vector2 gets written more and more over iterations of inner loop
    //elements of vector1 are needed for this
    } //end of inner loop
    //now data of vector1 is not needed anymore and vector2 takes the role of
    //vector 1 in the next iteration of the outer loop

    //old approach (costly):
    //clear vector1 ,copy vector2's data to vector1, clear vector2

    //wanted: 
    //forget about vector1's data
    //somehow 'rename' vector2 as 'vector1' 
    //(e.g. call vector2's data 'vector1')
    //do something so vector2 is empty again
    //(e.g. when referring to vector2 in the next
    //iteration of outer loop it should be an empty vector in the
    //beginning.)

    } // end of outer loop

我在努力

     vector<double> &vector1 = vector2;
     vector2.clear();

但我认为问题在于 vector1 然后是对 vector2 的引用,然后被删除。

有什么想法吗?

最佳答案

一种可能是使用 std::vector::swap :

vector<double> vector1;
vector1.swap(vector2);

关于c++ - 重命名 vector 而不是复制它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9990091/

相关文章:

python - dll在使用memset时导致Python崩溃

c++ - 自动指针容器

c++ - 如何在 GDB 中打印 C++ vector 的元素?

C++如何管理连续动态数组的迭代器

java - Ant ,从一个属性值引用到另一个

C链表栈和指针

c++ - 用于生产服务器的 Wt httpd

c++ - .exe 与 .dll 作为一个程序的模块

c++ - 排序链表和addSorted函数问题。

ajax - Microsoft.Ajax.Utilities dll : Missing Assembly, 从哪里下载?