Iterator and Algorithm Patterns
Transform Values
std::transform creates derived values by applying the same operation to each input element.
Transform Values
transform_values.cpp
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> base{2, 4, 6};
int multiplier = ;
std::vector<int> scaled(base.size());
std::transform(base.begin(), base.end(), scaled.begin(),
[multiplier](int value) {
return value * multiplier;
});
std::cout << "multiplier=" << multiplier << std::endl;
std::cout << "scaled0=" << scaled[0] << std::endl;
std::cout << "scaled2=" << scaled[2] << std::endl;
return 0;
}
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> base{2, 4, 6};
int multiplier = ;
std::vector<int> scaled(base.size());
std::transform(base.begin(), base.end(), scaled.begin(),
[multiplier](int value) {
return value * multiplier;
});
std::cout << "multiplier=" << multiplier << std::endl;
std::cout << "scaled0=" << scaled[0] << std::endl;
std::cout << "scaled2=" << scaled[2] << std::endl;
return 0;
}
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> base{2, 4, 6};
int multiplier = ;
std::vector<int> scaled(base.size());
std::transform(base.begin(), base.end(), scaled.begin(),
[multiplier](int value) {
return value * multiplier;
});
std::cout << "multiplier=" << multiplier << std::endl;
std::cout << "scaled0=" << scaled[0] << std::endl;
std::cout << "scaled2=" << scaled[2] << std::endl;
return 0;
}
transform
`std::transform` writes one output value for each input value.
output container
The output container must have room for the transformed values before the algorithm writes into it.