编写程序,建立整型双端队列容器,从键盘上输入若干个正整数,插入在双端队列容器开始位置,输出容器内所有元素,再将双端队列容器内所有素数拷贝至整型向量容器内,再输出整型向量容器内所有元素,要求使用函数对象。 输入格式: 第一行输入整数数量 输出格式: 第一行输出所有数字,空格间隔;(最后一个数字后面也有空格) 第二行输出所有素数,空格间隔;(最后一个数字后面也有空格)
时间: 2024-03-08 15:47:47 浏览: 87
双端队列入队出队等各种操作问题
5星 · 资源好评率100%
以下是C++代码实现:
```cpp
#include <iostream>
#include <deque>
#include <vector>
#include <algorithm>
using namespace std;
bool is_prime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
class is_prime_functor {
public:
bool operator()(int n) const {
return is_prime(n);
}
};
int main() {
int n;
cin >> n;
deque<int> num_deque;
for (int i = 0; i < n; i++) {
int num;
cin >> num;
num_deque.push_front(num);
}
for_each(num_deque.begin(), num_deque.end(), [](int num) {
cout << num << " ";
});
cout << endl;
vector<int> prime_vec;
copy_if(num_deque.begin(), num_deque.end(), back_inserter(prime_vec), is_prime_functor());
for_each(prime_vec.begin(), prime_vec.end(), [](int num) {
cout << num << " ";
});
cout << endl;
return 0;
}
```
首先使用整型双端队列容器存储输入的整数,将其插入在双端队列容器开始位置。然后使用 `for_each` STL 算法输出双端队列容器内所有元素。使用 `copy_if` STL 算法将双端队列容器内所有素数拷贝至整型向量容器内,其中 `is_prime_functor` 类实现了函数对象的功能,用于判断一个数是否是素数。最后使用 `for_each` STL 算法输出整型向量容器内所有元素。
阅读全文