习题10-12 编写一个产生器,用来产生0~9范围内的随机数 //建立一个顺序容器,使用该产生器和generate算法为该容器的元素赋值 //习题10-13 编写一个二元函数对象,用来计算x的y次方,其中x和y都是整数 //利用该函数对象和transform算法,并结合适当的函数适配器 //对于10-12所生成的整数序列中的每个元素n, 分别输出5^n, n^7和n^n
时间: 2024-01-14 09:02:55 浏览: 27
习题10-12:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
int main()
{
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(0, 9);
std::vector<int> nums(10);
std::generate(nums.begin(), nums.end(), [&](){ return dis(gen); });
for (int n : nums)
std::cout << n << " ";
std::cout << std::endl;
return 0;
}
```
习题10-13:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
#include <cmath>
struct power
{
int operator()(int x, int y) const
{
return std::pow(x, y);
}
};
int main()
{
std::vector<int> nums{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector<int> res(nums.size());
std::transform(nums.begin(), nums.end(), res.begin(), std::bind(power(), std::placeholders::_1, 5));
for (int n : res)
std::cout << n << " ";
std::cout << std::endl;
std::transform(nums.begin(), nums.end(), res.begin(), std::bind(power(), std::placeholders::_1, 7));
for (int n : res)
std::cout << n << " ";
std::cout << std::endl;
std::transform(nums.begin(), nums.end(), res.begin(), std::bind(power(), std::placeholders::_1, std::placeholders::_1));
for (int n : res)
std::cout << n << " ";
std::cout << std::endl;
return 0;
}
```