zoukankan      html  css  js  c++  java
  • 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;
    }

    运行结果:

  • 相关阅读:
    尾递归
    博客搬家 --- CSDN
    sublime text 插件集锦
    chrome 常用插件集锦
    IntelliJ Idea 2017 免费激活方法
    Mac下Java JNI 调C
    webgl学习笔记五-纹理
    webgl学习笔记四-动画
    webgl学习笔记三-平移旋转缩放
    webgl学习笔记二-绘图多点
  • 原文地址:https://www.cnblogs.com/chechen/p/12116518.html
Copyright © 2011-2022 走看看