当前位置:   article > 正文

037:函数对象的过滤器_d:函数对象的过滤器

d:函数对象的过滤器
  1. 描述
  2. 程序填空输出指定结果
  3. #include <iostream>
  4. #include <vector>
  5. using namespace std;
  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. // 在此处补充你的代码
  15. template <class T>
  16. void Print(T s,T e)
  17. {
  18. for(;s!=e; ++s)
  19. cout << *s << ",";
  20. cout << endl;
  21. }
  22. template <class T1, class T2,class T3>
  23. T2 Filter( T1 s,T1 e, T2 s2, T3 op)
  24. {
  25. for(;s != e; ++s) {
  26. if( op(*s)) {
  27. * s2 = * s;
  28. ++s2;
  29. }
  30. }
  31. return s2;
  32. }
  33. ostream & operator <<(ostream & o,A & a)
  34. {
  35. o << a.v;
  36. return o;
  37. }
  38. vector<int> ia;
  39. vector<A> aa;
  40. int main()
  41. {
  42. int m,n;
  43. while(cin >> m >> n) {
  44. ia.clear();
  45. aa.clear();
  46. int k,tmp;
  47. cin >> k;
  48. for(int i = 0;i < k; ++i) {
  49. cin >> tmp;
  50. ia.push_back(tmp);
  51. aa.push_back(tmp);
  52. }
  53. vector<int> ib(k);
  54. vector<A> ab(k);
  55. vector<int>::iterator p = Filter(ia.begin(),ia.end(),ib.begin(),FilterClass<int>(m,n));
  56. Print(ib.begin(),p);
  57. vector<A>::iterator pp = Filter(aa.begin(),aa.end(),ab.begin(),FilterClass<A>(m,n));
  58. Print(ab.begin(),pp);
  59. }
  60. return 0;
  61. }
  62. 输入
  63. 多组数据
  64. 每组数据两行
  65. 第一行是两个整数 m 和 n
  66. 第二行先是一个整数k ,然后后面跟着k个整数
  67. 输出
  68. 对每组数据,按原顺序输出第二行的后k个整数中,大于m且小于n的数
  69. 输出两遍
  70. 数据保证一定能找到符合要求的整数
  71. 样例输入
  72. 1 3
  73. 1 2
  74. 2 8
  75. 5 1 2 3 4 9
  76. 样例输出
  77. 2,
  78. 2,
  79. 3,4,
  80. 3,4,

  1. template <typename T>
  2. class FilterClass
  3. {
  4. T max, min;
  5. public:
  6. FilterClass(T _min, T _max) : max(_max), min(_min) {}
  7. bool operator()(T obj) { return min < obj && obj < max; }
  8. };

写一个类模版就行了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/208307
推荐阅读
相关标签
  

闽ICP备14008679号