赞
踩
描述
程序填空输出指定结果
#include <iostream> #include <vector> using namespace std; struct A { int v; A() { } A(int n):v(n) { }; bool operator<(const A & a) const { return v < a.v; } }; // 在此处补充你的代码 template <class T> void Print(T s,T e) { for(;s!=e; ++s) cout << *s << ","; cout << endl; } template <class T1, class T2,class T3> T2 Filter( T1 s,T1 e, T2 s2, T3 op) { for(;s != e; ++s) { if( op(*s)) { * s2 = * s; ++s2; } } return s2; } ostream & operator <<(ostream & o,A & a) { o << a.v; return o; } vector<int> ia; vector<A> aa; int main() { int m,n; while(cin >> m >> n) { ia.clear(); aa.clear(); int k,tmp; cin >> k; for(int i = 0;i < k; ++i) { cin >> tmp; ia.push_back(tmp); aa.push_back(tmp); } vector<int> ib(k); vector<A> ab(k); vector<int>::iterator p = Filter(ia.begin(),ia.end(),ib.begin(),FilterClass<int>(m,n)); Print(ib.begin(),p); vector<A>::iterator pp = Filter(aa.begin(),aa.end(),ab.begin(),FilterClass<A>(m,n)); Print(ab.begin(),pp); } return 0; }
输入
多组数据
每组数据两行
第一行是两个整数 m 和 n
第二行先是一个整数k ,然后后面跟着k个整数
输出
对每组数据,按原顺序输出第二行的后k个整数中,大于m且小于n的数
输出两遍
数据保证一定能找到符合要求的整数
样例输入
1 3 1 2 2 8 5 1 2 3 4 9
样例输出
2, 2, 3,4, 3,4,
如果将FilterClass<int>(m,n)当作一个函数会发现这个参数是不够的,所以FilterClass<int>(m,n)是一个对象,重载了op(*s) ()运算符。
- #include <iostream>
- #include <vector>
- using namespace std;
-
-
- struct A {
- int v;
- A() { }
- A(int n) :v(n) { };
- bool operator<(const A & a) const {
- return v < a.v;
- }
- };
- // 在此处补充你的代码
-
- template <class T>
- struct FilterClass {
- T m, n;
- FilterClass(T a, T b):m(a),n(b) {}
- bool operator()(T s) {
- return (m < s) && (s < n);
- }
- };
-
- template <class T>
- void Print(T s, T e)
- {
- for (; s != e; ++s)
- cout << *s << ",";
- cout << endl;
- }
- template <class T1, class T2, class T3>
- T2 Filter(T1 s, T1 e, T2 s2, T3 op)
- {
- for (; s != e; ++s) {
- if (op(*s)) {
- *s2 = *s;
- ++s2;
- }
- }
- return s2;
- }
-
- ostream & operator <<(ostream & o, A & a)
- {
- o << a.v;
- return o;
- }
- vector<int> ia;
- vector<A> aa;
- int main()
- {
- int m, n;
- while (cin >> m >> n) {
- ia.clear();
- aa.clear();
- int k, tmp;
- cin >> k;
- for (int i = 0; i < k; ++i) {
- cin >> tmp;
- ia.push_back(tmp);
- aa.push_back(tmp);
- }
- vector<int> ib(k);
- vector<A> ab(k);
- vector<int>::iterator p = Filter(ia.begin(), ia.end(), ib.begin(), FilterClass<int>(m, n));
- Print(ib.begin(), p);
- vector<A>::iterator pp = Filter(aa.begin(), aa.end(), ab.begin(), FilterClass<A>(m, n));
- Print(ab.begin(), pp);
-
- }
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。