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

    运行结果:

  • 相关阅读:
    Ant属性文件
    使用numpy处理数组
    机器学习实战之决策树(一)
    列表去掉重复元素
    cv2.putText,cv2.rectangle方法
    sklearn 中文文档
    numpy delete方法
    MATLAB ~的用法
    MATLAB 基础
    Python 遍历目录下的子目录和文件
  • 原文地址:https://www.cnblogs.com/chechen/p/12116518.html
Copyright © 2011-2022 走看看