011:编程填空:前K大的偶数

描述

输入n个整数,输出整数数列中大小排名前k的偶数

 

#include <algorithm>
#include <iostream>
#include <stack>
#include <queue>
#include <vector>
#include <cstring>
#include <cstdlib>
#include <string>
#include <map>
#include <set>

using namespace std;
class MyQueue
{
// 在此处补充你的代码
};
int main()
{
	int t;
	cin >> t;
	while(t--) {
		int n, k;
		cin >> n >> k;
		MyQueue q(k);
		for (int i = 0; i < n; ++i)
			cin >> q;
		cout<<q;
		cout << endl;
	}
	return 0; 
}

输入

有多组数据
第一行是数据组数 t
对每组数据: 
第一行为整数n (n>=3)和k
接下来的一行为n个整数,保证这些整数中至少有k个偶数。

输出

对每组数据,输出k个整数,降序排列,表示选出来的大小排名前k的偶数

样例输入

2
9 4
1 2 4 3 6 6 7 8 9
3 2
18 16 14

样例输出

8 6 6 4
18 16

class MyQueue
{
    // 在此处补充你的代码
    int k;

public:
    vector<int> que;
    MyQueue(int _k) : k(_k) {}
    friend void operator>>(istream &is, MyQueue &mq)
    {
        int temp;
        cin >> temp;
        if (temp % 2 == 0)
            mq.que.push_back(temp);
    }
    friend void operator<<(ostream &os, MyQueue &mq)
    {
        sort(mq.que.begin(), mq.que.end());
        for (vector<int>::iterator i = mq.que.end() - 1; mq.que.end() - i <= mq.k; --i)
            cout << *i << ' ';
    }
};

重载左右移运算符来实现题目要求。写友元函数的时候要记得指明对象。queue容器没有迭代器。

C ++迭代器用于对数据结构中的元素进行顺序访问或随机访问。因此,对于根据定义不允许顺序或随机访问的数据结构,迭代器没有任何意义。这就是堆栈和队列没有迭代器的原因。另一方面,向量和列表允许对元素进行顺序和/或随机访问,因此迭代器对于导航这些数据结构是有意义的。

上一篇:011、py43-day12-sky-20210818


下一篇:011.hive创建表、添加表注释、查看函数用法、加载数据到hive表