从元组中提取向量
Extracting vectors from a tuple
我在元组功能中有int
S,A vector<int>
和vector<string>
。如果运行此功能时存在错误,它将返回:{0, 0, {0}, {"0"}}
的元组。int
S没有错误。我经常简化了此代码,并且无法弄清楚为什么我不能在元组中使用向量。它在{
下放置了一条红色的线条。这是一个更简单的版本:
#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 tuples
是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";
}
给出所需的结果。
也值得研究为什么编译器通过查看编译器的输出来将squiggly
红线放在您的代码下。
检查此一个:),据您根本无法返回初始器列表(Vector的隐式构造函数),您可以返回使用Vector构造器(explicit)返回创建的元组。
#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;
}
相关文章:
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 如何创建一个函数来提取向量内部字符串中的字段?
- 将不同类型的模板参数包提取到双精度向量中会产生警告
- 遍历对象向量,并找到与从文本文件中提取的对象匹配的变量
- 如何从多维向量中提取数据
- 在 C++ 中,仅使用递归来提取向量中的最大元素
- 将张量的"lower diagonal"映射到矩阵,作为将矩阵的下三角形部分提取到向量的推广
- C :如何将多个URL从网站HTML提取到向量
- 从向量中提取最小值、最大值和中位数的最有效方法是什么
- 制作一个对的向量,对其进行排序,然后从中提取向量
- 从元组中提取向量
- 读取文件后提取子向量时的C 错误
- 从坐标向量中提取坐标并保存到文件
- 将一个向量(从向量的一个向量中提取)分配给另一个向量时出错,运算符为
- 提取向量的其他元素
- 在向量中查找值,并从该位置提取子向量
- 使用 std::unique_copy 从向量中提取不区分大小写的唯一字符串
- 如何从Eigen中的索引向量中提取子向量(Eigen::Vector)
- 使用迭代器从向量中提取子向量
- 可视化地从c++向量中指定的索引中提取元素