一、遍历函数
1.for_each遍历函数
#include<iostream> using namespace std; #include<algorithm> #include<vector> //for_each遍历函数 //普通函数 void pri(int val) { cout << val << " "; } class myprint { public: void operator()(int val1) { cout << val1 << " "; } }; int main(void) { vector<int> v; for (int i = 0; i < 10; i++) v.push_back(i); for_each(v.begin(), v.end(), pri); cout <<endl<< "-----------------------------" << endl; for_each(v.begin(), v.end(), myprint()); return 0; }
二.拷贝函数
1.copy
//#include<stdio.h> //#include<stdlib.h> //#include<math.h> //#include<string.h> // // //int sum = 0; //int queueB[10] = { 0 }; //void show(int queue[],int m) //{ // for (int i = 0; i < m; i++) // { // printf("%d ", queue[i]+1); // } // printf("\n"); //} // //int check(int k,int queue[]) //{ // for(int row = 0;row<k;row++) // if(queue[row] == queue[k] || abs(queue[row]-queue[k]) == abs(k-row )) // return 0; // return 1; //} // //void queue_eightB(int n, int queue[], int m, int** a) //{ // if (n < m) // { // for (int i = 0; i < m; i++) // { // if (a[n][i] == 1 || queue[n] != i) // { // queueB[n] = i; // if (check(n, queueB)) // queue_eightB(n + 1, queue, m, a); // } // // } // } // else // { // sum++; // } //} //void queue_eight(int n,int queue[],int m,int **a) //{ // if (n < m) // { // for(int i = 0;i<m;i++) // { // if (a[n][i] == 1) // { // queue[n] = i; // if (check(n, queue)) // queue_eight(n + 1, queue, m,a); // } // // } // } // else // { // queue_eightB(0, queue, n, a); // } //} // //int main(void) //{ // int n; // scanf("%d", &n); // int* queue = (int*)malloc(sizeof(int) * n); // int** a = (int**)malloc(sizeof(int*) * n); // for (int i = 0; i < n; i++) // { // a[i] = (int*)malloc(sizeof(int) * n); // } // for (int i = 0; i < n; i++) // { // for (int j = 0; j < n; j++) // { // scanf("%d", &a[i][j]); // } // } // queue_eight(0,queue,n,a); // // printf("%d",2* sum); // // return 0; //} #include<iostream> using namespace std; #include<vector> #include<algorithm> class myprint { public: void operator()(int val) { cout << val << " "; } }; //copy算法功能:容器内指定范围的元素拷贝到另一容器 int main(void) { vector<int> v1; for (int i = 0; i < 10; i++) { v1.push_back(i); } vector<int> v2; v2.resize(v1.size()); copy(v1.begin(), v1.end(), v2.begin()); for_each(v2.begin(), v2.end(), myprint()); return 0; }
三、集合算法
求并集
#include<iostream> using namespace std; #include<algorithm> #include<vector> void myprint(int val) { cout << val << " "; } //集合合并set_union int main(void) { vector<int> v1; vector<int>v2;//要求并集的两个容器,且两个容器需要是有序的 for (int i = 0; i < 10; i++) { v1.push_back(i); v2.push_back(i + 5); } vector<int>v3;//目标容器 v3.resize(v1.size() + v2.size());// 放置并集前需要先分配大小 vector<int>::iterator itend = set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());//返回目标容器最后放置数的迭代器 for_each(v3.begin(), itend, myprint); cout << endl; return 0; }
原文:https://www.cnblogs.com/loliconsk/p/14287107.html