gpt4 book ai didi

c++ - STL算法/功能

转载 作者:搜寻专家 更新时间:2023-10-30 23:56:47 25 4
gpt4 key购买 nike

我正在尝试使用转换算法(或 STL 的任何其他可以完成这项工作的部分)来更改整数序列。如果当前元素大于5,则保留。否则使用 5。

这不编译:

std::vector<int> vec;
vec.push_back(6);
vec.push_back(2);
vec.push_back(9);
vec.push_back(4);
vec.push_back(7);

std::transform(vec.begin(), vec.end(), vec.begin(), std::bind1st(std::max<int>(), 5));

我无法访问 C++11。

最佳答案

对于此任务,更合适的算法是 std::replace_if 。例如

#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>


int main()
{
std::vector<int> vec;

vec.push_back( 6 );
vec.push_back( 2 );
vec.push_back( 9 );
vec.push_back( 4 );
vec.push_back( 7 );

for ( std::vector<int>::size_type i = 0; i < vec.size(); i++ )
{
std::cout << vec[i] << ' ';
}
std::cout << std::endl;

std::replace_if( vec.begin(), vec.end(),
std::bind2nd( std::less<int>(), 5 ), 5 );

for ( std::vector<int>::size_type i = 0; i < vec.size(); i++ )
{
std::cout << vec[i] << ' ';
}
std::cout << std::endl;

return 0;
}

输出是

6 2 9 4 7 
6 5 9 5 7

关于c++ - STL算法/功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27106581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com