37

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 
 5 
 6 struct A {
 7     int v;
 8     A() { }
 9     A(int n):v(n) { };
10     bool operator<(const A & a) const {
11         return v < a.v;
12     }
13 };
14 template <class T>
15 struct FilterClass{
16     T m,n;
17     FilterClass(T _m,T _n):m(_m),n(_n){}
18     bool operator()(T p){
19         if(p < n && m < p)
20           return true;
21         return false;
22     }
23 };
24 
25 template <class T>
26 void Print(T s,T e)
27 {
28     for(;s!=e; ++s)
29         cout << *s << ",";
30     cout << endl;
31 }
32 template <class T1, class T2,class T3>
33 T2 Filter( T1 s,T1 e, T2 s2, T3 op) 
34 {
35     for(;s != e; ++s) {
36         if( op(*s)) {
37             * s2 = * s;
38             ++s2;
39         }
40     }
41     return s2;
42 }
43 
44 ostream & operator <<(ostream & o,A & a)
45 {
46     o << a.v;
47     return o;
48 }
49 vector<int> ia;
50 vector<A> aa; 
51 int main()
52 {
53     int m,n;
54     while(cin >> m >> n) {
55         ia.clear();
56         aa.clear(); 
57         int k,tmp;
58         cin >> k;
59         for(int i = 0;i < k; ++i) {
60             cin >> tmp; 
61             ia.push_back(tmp);
62             aa.push_back(tmp); 
63         }
64         vector<int> ib(k);
65         vector<A> ab(k);
66         vector<int>::iterator p =  Filter(ia.begin(),ia.end(),ib.begin(),FilterClass<int>(m,n));
67         Print(ib.begin(),p);
68         vector<A>::iterator pp = Filter(aa.begin(),aa.end(),ab.begin(),FilterClass<A>(m,n));
69         Print(ab.begin(),pp);
70         
71     }
72     return 0;
73 }

 

posted @ 2022-09-13 22:59  balabalahhh  阅读(295)  评论(0编辑  收藏  举报