場景描述:一個源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; }
運行結果: