我有int
一个vector<int>
, 和一个 vector<string>
在元组函数中。如果运行此函数时出现错误,它将返回一个元组:{0, 0, {0}, {"0"}}
. int
没有错误。我已经大大简化了这段代码,但无法弄清楚为什么我不能在元组中使用 vector 。它在 {
下面放了一条红色的波浪线。 .
这是一个更简单的版本:
#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;
}
如果不能在元组中使用 vector ,还有什么其他方法可以解决这个问题?
最佳答案
您不能在右侧使用 initialiser
列表 {0}
,即在 ==
之后。
你不能在元组中使用 vector
是一个false
语句。
将您的代码更改为:
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";
}
给出了想要的结果。
通过查看编译器的输出,还值得研究为什么编译器会在您的代码下方放置一条波浪状
红线。
关于c++ - 从元组中提取 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48021170/