溫馨提示×

如何在c++中使用visit遍歷容器

c++
小樊
123
2024-09-16 13:33:41
欄目: 編程語言

在C++中,std::visit 是一個函數,用于在 std::variant 或其他可訪問類型的變體中訪問其值

首先,需要包頭文件。然后,創建一個std::variant 類型的容器(例如,std::vector<std::variant<…>>)。接下來,使用范圍for循環遍歷容器,并在每個元素上調用 std::visit`。

以下是一個示例:

#include<iostream>
#include<vector>
#include<variant>

int main() {
    // 定義一個包含 int 和 std::string 類型的 variant 容器
    std::vector<std::variant<int, std::string>> container = {10, "Hello", 20, "World"};

    // 使用 std::visit 遍歷容器并處理每個元素
    for (const auto& elem : container) {
        std::visit([](const auto& value) {
            // 對于 int 類型的值
            if constexpr (std::is_same_v<decltype(value), int>) {
                std::cout << "Integer: "<< value<< std::endl;
            }
            // 對于 std::string 類型的值
            else if constexpr (std::is_same_v<decltype(value), std::string>) {
                std::cout << "String: "<< value<< std::endl;
            }
        }, elem);
    }

    return 0;
}

這將輸出:

Integer: 10
String: Hello
Integer: 20
String: World

在此示例中,我們使用了 std::visit 來訪問 std::variant 容器中的每個元素。對于每種類型,我們都有一個單獨的處理分支。注意,我們使用了 if constexprstd::is_same_v 來檢查當前值的類型。這樣,編譯器可以在編譯時優化代碼,并確保我們不會在運行時進行不必要的類型檢查。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女