Language/C++

[C++] transform

리네엔 2024. 10. 24. 09:51

입력 범위의 각 요소에 대해 주어진 함수를 적용하여 다른 범위에 저장하는 역할

std::transform(input_begin, input_end, output_begin, unary_op);

단항 연산

  • 문자열 소문자로 바꾸기
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <cctype>
    

int main() {
std::string str = "Hello, World!";
std::string result;
result.resize(str.size());

// str의 모든 문자를 소문자로 변환하여 result에 저장
std::transform(str.begin(), str.end(), result.begin(), ::tolower);

std::cout << result << std::endl; // 출력: hello, world!

return 0;

}

- 배열에 각 수를 더하기 
     - 람다 표현 식 사용
std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector<int> result(vec.size());  // 결과를 저장할 벡터

// vec의 각 요소에 100을 더하여 result에 저장
std::transform(vec.begin(), vec.end(), result.begin(), [](int x) { return x + 100; });

## `std::transform(input1_begin, input1_end, input2_begin, output_begin, binary_op);`
### 이항 함수
- 두 벡터의 합
```cpp
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec1 = {1, 2, 3, 4};
    std::vector<int> vec2 = {10, 20, 30, 40};
    std::vector<int> result(vec1.size());

    // vec1과 vec2의 각 요소를 더해서 result에 저장
    std::transform(vec1.begin(), vec1.end(), vec2.begin(), result.begin(), std::plus<int>());

    for (int val : result) {
        std::cout << val << " ";  // 출력: 11 22 33 44
    }

    return 0;
}

'Language > C++' 카테고리의 다른 글

[C++] string to / from string  (0) 2024.10.24
[C++] 형변환  (0) 2024.10.24