亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
轮台县| 疏附县| 普洱| 北辰区| 神农架林区| 玛纳斯县| 辉县市| 兰州市| 甘孜县| 青铜峡市| 昌邑市| 黄骅市| 南陵县| 宁明县| 云南省| 神木县| 从江县| 崇明县| 太仓市| 黄山市| 文安县| 湘西| 思南县| 和平县| 嫩江县| 隆德县| 岑巩县| 蛟河市| 贵南县| 磐安县| 温泉县| 夏邑县| 江孜县| 平泉县| 连城县| 布拖县| 军事| 衡南县| 凤翔县| 桂林市| 自治县|