簡體   English   中英

從元組中提取向量

[英]Extracting vectors from a tuple

我在元組函數中有intvector<int>vector<string> 如果運行此函數時出錯,它將返回一個元組: {0, 0, {0}, {"0"}} int沒有錯誤。 我已經簡化了很多代碼,無法弄清楚為什么不能在元組中使用向量。 它在{下放置了一條紅色的波浪線。 這是一個簡單得多的版本:

#include <iostream>
#include <vector>
using namespace std;


tuple<vector<int>, vector<string>> tuples()
{
    return { {0}, {"0"} };
}


int main()
{
    tuple<vector<int>, vector<string>> result = tuples();
    if (get<0>(result) == {0} && get<1>(result) == {"0"})
    {
        cout << "It worked!\n";
    }

    return 0;
}

如果您不能在元組中使用向量,那么另一種方法是什么呢?

您不能在右側(即==之后)使用initialiser列表{0}

You can't use vectors in tuplesfalse陳述。

將代碼更改為:

tuple<vector<int>, vector<string>> result = tuples();
vector<int> v = {0};
vector<string> v2 = {"0"};
if (get<0>(result) == v && get<1>(result) == v2)
{
    cout << "It worked!\n";
}

提供所需的結果。

值得一提的是,為什么編譯器通過查看編譯器的輸出,在您的代碼下加上一條squiggly紅線。

檢查這一點:)就您根本無法返回初始化程序列表(向量的隱式構造函數)而言,您可以使用向量構造函數(顯式)返回創建的元組。

#include <iostream>
#include <tuple>
#include <vector>
using namespace std;

std::tuple<std::vector<int>, std::vector<string>> tuples()
{
    return std::make_tuple(std::vector<int>({0}), std::vector<std::string>({"0"}));
}


int main()
{
    tuple<vector<int>, vector<string>> result = tuples();
    if (get<0>(result) == std::vector<int>{0} && get<1>(result) == std::vector<std::string>{"0"})
    {
        cout << "It worked!\n";
    }

    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM