编写程序,建立整型向量容器,从键盘上输入若干正整数,添加在向量容器尾部,输出向量容器内所有元素,再将向量容器内所有素数拷贝至整型双端队列容器内,再输出整型双端队列容器内所有元素,要求使用lambda函数
时间: 2024-03-26 22:34:36 浏览: 58
下面是一个 C++ 的示例程序,实现了上述功能:
```cpp
#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
int main() {
vector<int> vec;
deque<int> deq;
// 从键盘输入正整数,添加到向量容器尾部
cout << "请输入若干正整数,以-1结束:" << endl;
int num;
while (cin >> num && num != -1) {
vec.push_back(num);
}
// 输出向量容器内所有元素
cout << "向量容器内所有元素为:" << endl;
for (int x : vec) {
cout << x << " ";
}
cout << endl;
// 将向量容器内所有素数拷贝至整型双端队列容器内
copy_if(vec.begin(), vec.end(), back_inserter(deq), [](int x) {
for (int i = 2; i < x; ++i) {
if (x % i == 0) {
return false;
}
}
return true;
});
// 输出整型双端队列容器内所有元素
cout << "整型双端队列容器内所有元素为:" << endl;
for (int x : deq) {
cout << x << " ";
}
cout << endl;
return 0;
}
```
在这个程序中,我们首先建立了一个整型向量容器 `vec` 和一个整型双端队列容器 `deq`。然后,我们通过循环从键盘读入若干正整数,添加到向量容器尾部,直到读入 `-1` 为止。接着,使用 `copy_if` 算法将向量容器 `vec` 中所有素数拷贝至整型双端队列容器 `deq` 中。这里,我们使用了一个 lambda 函数作为 `copy_if` 的谓词参数,判断一个数是否为素数。最后,输出向量容器和双端队列容器内所有元素。
需要注意的是,本示例程序并没有对输入的数据进行错误处理,例如输入非法字符或负整数等情况。在实际编程中,需要根据实际需求进行适当的错误处理。
阅读全文