MST

星途 面试题库

面试题:C++中transform处理自定义结构体数据转换

定义一个结构体Person,包含姓名(std::string)和年龄(int)。有一个std::vector<Person>,请使用transform算法将这个向量中所有Person的年龄增加5岁,并且将姓名全部转换为大写(可借助<algorithm>中的相关函数如transform用于字符串转换)。写出完整的实现代码,包括必要的头文件和命名空间声明。
29.0万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

// 定义Person结构体
struct Person {
    std::string name;
    int age;
};

// 函数用于将字符串转换为大写
void toUpperCase(std::string& str) {
    std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) {
        return std::toupper(c);
    });
}

// 函数用于增加年龄
void incrementAge(Person& person) {
    person.age += 5;
}

int main() {
    std::vector<Person> people = {
        {"Alice", 25},
        {"Bob", 30},
        {"Charlie", 35}
    };

    // 使用transform增加年龄
    std::transform(people.begin(), people.end(), people.begin(), incrementAge);

    // 使用transform将姓名转换为大写
    std::transform(people.begin(), people.end(), people.begin(), [](Person& person) {
        toUpperCase(person.name);
        return person;
    });

    // 输出结果
    for (const auto& person : people) {
        std::cout << "Name: " << person.name << ", Age: " << person.age << std::endl;
    }

    return 0;
}