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