C++ std::vector 合並數據,不排序,保持最初的順序


 場景描述:一個源vector保存一系列屬性值,另一個vector是最新的數據,最終源數據中保存着最新且有效的屬性值

#include <iostream>
#include <vector>

//合並兩個vector vt1 是源數據,vt2是新數據,想要的結果是 vt1最后是2,3,4,保持最初插入的順序
void test()
{
    std::vector<int> vt1;
    vt1.push_back(1);
    vt1.push_back(2);
    vt1.push_back(3);

    std::vector<int> vt2;
    vt2.push_back(2);
    vt2.push_back(3);
    vt2.push_back(4);

    for (size_t i = 0; i < vt2.size();++i)
    {
        bool bfind = false;
        for (size_t j = 0; j < vt1.size();++j)
        {
            if (vt2[i] == vt1[j])
            {
                bfind = true;
                break;
            }
        }

        if (!bfind)
        {
            vt1.push_back(vt2[i]);
        }
    }

    for (std::vector<int>::iterator iter = vt1.begin(); iter != vt1.end();)
    {
        bool bfind = false;
        for (std::vector<int>::iterator iter1 = vt2.begin(); iter1 != vt2.end();++iter1)
        {
            if (*iter == *iter1)
            {
                bfind = true;
                break;
            }
        }

        if (!bfind)
        {
            iter = vt1.erase(iter);//刪除元素,返回值指向已刪除元素的下一個位置
        }
        else
            ++iter;
    }


    for (std::vector<int>::iterator iter = vt1.begin(); iter != vt1.end();iter++)
    {
        std::cout << *iter << std::endl;
    }
}

int main()
{
    test();
    getchar();
    return 0;
}

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM