copy():复制容器元素
merge():合并容器元素
以下为copy()代码:
// k.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { vector<int> vecScoreC1; vector<int> vecScoreC2; vecScoreC1.push_back(32); vecScoreC1.push_back(83); vecScoreC1.push_back(94); vecScoreC2.push_back(70); vecScoreC2.push_back(98); vecScoreC2.push_back(73); /*正向复制 vector<int> vecScore; vecScore.resize(vecScoreC1.size() + vecScoreC2.size()); vector<int>::iterator itlast = copy(vecScoreC1.begin(), vecScoreC1.end(), vecScore.begin()); copy(vecScoreC2.begin(), vecScoreC2.end(), itlast);*/ /*反向复制,copy_backward()第三个参数表示复制来的元素将从这个位置开始逐个向前放置 vector<int> vecScore; vecScore.resize(vecScoreC1.size() + vecScoreC2.size()); vector<int>::iterator itlast = copy(vecScoreC1.begin(), vecScoreC1.end(), vecScore.begin()); copy_backward(vecScoreC2.begin(), vecScoreC2.end(), vecScore.end());*/ return 0; }
// k.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { vector<int> vecScoreC1; vector<int> vecScoreC2; vecScoreC1.push_back(32); vecScoreC1.push_back(83); vecScoreC1.push_back(94); vecScoreC2.push_back(70); vecScoreC2.push_back(94); vecScoreC2.push_back(73); /*注意,在merge之前必须将将容器中的数据排列 vector<int> vecScore; vecScore.resize(vecScoreC1.size() + 2*vecScoreC2.size()); sort(vecScoreC1.begin(), vecScoreC1.end()); sort(vecScoreC2.begin(), vecScoreC2.end()); merge(vecScoreC1.begin(), vecScoreC1.end(), vecScoreC2.begin(), vecScoreC2.end(), vecScore.begin());*/ //如果两个容器中有相同的数据,则可以使用set_union来消除冗余 vector<int> vecScore; vecScore.resize(vecScoreC1.size() + 2*vecScoreC2.size()); sort(vecScoreC1.begin(), vecScoreC1.end()); sort(vecScoreC2.begin(), vecScoreC2.end()); set_union(vecScoreC1.begin(), vecScoreC1.end(), vecScoreC2.begin(), vecScoreC2.end(), vecScore.begin()); return 0; }
如果为string代码如下:
// k.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { vector<string> vecGoods; vector<string> vecStationaries; vecStationaries.push_back("Pen"); vecStationaries.push_back("Erase"); vector<string> vecOfficeSupplies; vecOfficeSupplies.push_back("Folder"); vecOfficeSupplies.push_back("Pen"); vecGoods.resize(vecStationaries.size() + vecOfficeSupplies.size()); sort(vecStationaries.begin(), vecStationaries.end()); sort(vecOfficeSupplies.begin(), vecOfficeSupplies.end()); vector<string>::iterator itend = set_union(vecStationaries.begin(), vecStationaries.end(), vecOfficeSupplies.begin(), vecOfficeSupplies.end(), vecGoods.begin()); return 0; }