나는 std::deque<float> k{3, 4, 5, 0};
입니다.큐의 각 요소에 함수를 적용하는 방법은 무엇입니까?
각 요소에 함수를 적용하려면 어떻게해야합니까?
float o(float k) {if (k > 4) return k - CONSTDIFF;};
각 요소에이 기능을 적용하면 결과는 다음과 같습니다
k == {3, 4, 5-CONSTDIFF, 0};
나는 std::deque<float> k{3, 4, 5, 0};
입니다.큐의 각 요소에 함수를 적용하는 방법은 무엇입니까?
각 요소에 함수를 적용하려면 어떻게해야합니까?
float o(float k) {if (k > 4) return k - CONSTDIFF;};
각 요소에이 기능을 적용하면 결과는 다음과 같습니다
k == {3, 4, 5-CONSTDIFF, 0};
당신은 std::transform
및 람다 식을 사용할 수 있습니다
std::transform(
k.begin(),
k.end(),
k.begin(),
[](float f) {
return (f > 4.0f) ? (f - CONSTDIFF) : f;
}
);
이것은 C++ (11) 솔루션입니다. C++ 03을 사용하고 있다면 람다 식을 자유 함수로 옮길 수 있습니다.
당신은 그렇게 for_each()
를 사용할 수 있습니다.
http://www.cplusplus.com/reference/algorithm/for_each/
예 :
#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;
float CONSTDIFF=1;
void o(float& k) {if (k > 4) k-= CONSTDIFF;};
int main()
{
deque<float> k;
k.push_back(3);
k.push_back(4);
k.push_back(5);
k.push_back(0);
for_each(k.begin(),k.end(),o);
for(deque<float>::iterator i=k.begin(); i!=k.end(); i++)
{
cout << *i << endl;
}
return 0;
}
for_each(k.begin(),k.end(),[=](float x)
{return x>4.0f ? x-CONSTDIFF : x ;});
그리고?
for(auto&x:k) if (x>4) x-=CONSTDIFF;
향후 질문에서 좀 더 명확히하십시오. –