【算法與數據結構實戰】線性表操作-實現A並B,結果放入A中
阿新 • • 發佈:2018-05-01
!= 實現 push 集合 div 中間 for iter 和數
//數據結構與算法基礎題1:線性表操作,實現A並B,結果放入A中 #include "stdafx.h" #include <iostream> #include <string> #include <vector> #include <algorithm> #pragma warning(disable:4996) using namespace std; int main() { vector<int> set_A, set_B; int num_of_elements_in_A, num_of_elements_in_B; //下面輸入集合A和B的元素 //從輸入方便的角度考慮,沒有進行去重,只在最後合並的時候進行了去重 cout << "請輸入集合A的元素個數:"; cin >> num_of_elements_in_A; if (num_of_elements_in_A <= 0) { cout << "元素個數不可以小於0!" << endl; return 1; } cout << "集合A元素個數為:" << num_of_elements_in_A << endl; for (int i = 0; i < num_of_elements_in_A; i++) { int temp = 0; cout << "請輸入集合A的第" << i + 1 << "個元素:"; cin >> temp; set_A.push_back(temp); } cout << "請輸入集合B的元素個數:"; cin >> num_of_elements_in_B; if (num_of_elements_in_B <= 0) { cout << "元素個數不可以小於0!" << endl; return 1; } cout << "集合B元素個數為:" << num_of_elements_in_B << endl; for (int i = 0; i < num_of_elements_in_B; i++) { int temp = 0; cout << "請輸入集合B的第" << i + 1 << "個元素:"; cin >> temp; set_B.push_back(temp); } //把B的元素先全部插入A中 vector<int>::iterator iter_B = set_B.begin(); while (iter_B != set_B.end()) { set_A.push_back(*iter_B); iter_B++; } sort(set_A.begin(), set_A.end()); set_A.erase(unique(set_A.begin(), set_A.end()), set_A.end()); vector<int>::iterator iter_A = set_A.begin(); cout << "合並後A中的實際元素為:"; while (iter_A != set_A.end()) { cout << *iter_A << " "; iter_A++; } cout << endl; system("pause"); return 0; }
註意,中間erase裏的unique使用,得要先對vector進行排序,否則不會進行所有的去重(即只對相鄰的重復進行去重)
進一步體會了STL的使用對於基本算法和數據結構實現的方便性。
【算法與數據結構實戰】線性表操作-實現A並B,結果放入A中