91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

c++標準庫中的visit函數有哪些

c++
小樊
93
2024-09-16 13:40:12
欄目: 編程語言

在 C++ 標準庫中,std::visit 是一個用于處理 std::variant 類型的函數。std::variant 是一種類型安全的聯合體(union),可以存儲不同類型的值。std::visit 函數允許你以類型安全的方式訪問 std::variant 中存儲的值。

std::visit 的基本語法如下:

template< class Visitor, class... Variants >
constexpr decltype(auto) visit( Visitor&& vis, Variants&&... vars );

其中,Visitor 是一個可調用對象,它可以接受 Variants 中的任何類型作為參數。vars 是一個或多個 std::variant 實例。

std::visit 的工作原理是將 Visitor 應用于 vars 中的每個 std::variant。如果 vars 中的所有 std::variant 都包含相同的類型,那么 Visitor 將被調用一次,傳入這些類型的值。否則,std::visit 會依次嘗試每個可能的類型組合,直到找到一個匹配的組合并調用 Visitor

下面是一個簡單的示例,展示了如何使用 std::visit

#include<iostream>
#include<variant>

struct PrintVisitor {
    void operator()(int i) const {
        std::cout << "int: " << i << std::endl;
    }

    void operator()(float f) const {
        std::cout << "float: " << f << std::endl;
    }
};

int main() {
    std::variant<int, float> v1 = 42;
    std::variant<int, float> v2 = 3.14f;

    std::visit(PrintVisitor{}, v1); // 輸出 "int: 42"
    std::visit(PrintVisitor{}, v2); // 輸出 "float: 3.14"

    return 0;
}

在這個示例中,我們定義了一個名為 PrintVisitor 的訪問者類,它可以打印 intfloat 類型的值。然后,我們創建了兩個 std::variant 實例,分別存儲 intfloat 類型的值。最后,我們使用 std::visit 函數將 PrintVisitor 應用于這兩個 std::variant 實例,從而打印它們的值。

0
平定县| 钦州市| 吉木萨尔县| 灌云县| 新郑市| 美姑县| 全南县| 邯郸县| 久治县| 金乡县| 巴彦淖尔市| 五寨县| 天峨县| 新河县| 上虞市| 三台县| 安徽省| 临高县| 前郭尔| 麻栗坡县| 顺平县| 许昌县| 永川市| 山东省| 迁安市| 富裕县| 山阴县| 博野县| 勐海县| 德保县| 鹤岗市| 大厂| 临澧县| 威海市| 满洲里市| 昌黎县| 水城县| 颍上县| 吴桥县| 石首市| 平安县|