MST

星途 面试题库

面试题:C++ 中 std::variant 的复杂使用

假设你有一个包含不同类型数据(如 int、double、std::string)的容器,要求使用 std::variant 实现一个函数,该函数能够正确处理容器中不同类型的数据并进行相应的操作(例如,对 int 进行加 1,对 double 进行平方,对 std::string 输出其长度),请编写完整代码。
14.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

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

// 处理不同类型数据的函数
void processData(std::variant<int, double, std::string> var) {
    if (std::holds_alternative<int>(var)) {
        auto num = std::get<int>(var);
        num += 1;
        std::cout << "Processed int: " << num << std::endl;
    } else if (std::holds_alternative<double>(var)) {
        auto num = std::get<double>(var);
        num = num * num;
        std::cout << "Processed double: " << num << std::endl;
    } else if (std::holds_alternative<std::string>(var)) {
        auto str = std::get<std::string>(var);
        std::cout << "Length of string: " << str.length() << std::endl;
    }
}

int main() {
    std::vector<std::variant<int, double, std::string>> container;
    container.emplace_back(5);
    container.emplace_back(3.14);
    container.emplace_back("Hello, World!");

    for (const auto& var : container) {
        processData(var);
    }

    return 0;
}