问题标签 [stdtuple]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何从元组中获取第 N 种类型?
我想制作一个模板,我可以在其中输入一个索引,它会给我那个索引的类型。我知道我可以做到这一点,decltype(std::get<N>(tup))
但我想自己实现。例如,我想这样做,
...它会给我位置的类型N - 1
(因为从 0 开始索引的数组)。我怎样才能做到这一点?谢谢。
c++ - std::get 是如何工作的?
在尝试自己制作一个std::get<N>
(std::tuple)
方法之后,我不太确定它是如何由编译器实现的。我知道std::tuple
有这样的构造函数,
但具体args...
分配给什么?我认为这对于了解如何工作很有用,std::get
因为需要将参数放置在某个地方才能访问它们......
templates - 解包 std::pair>> 到元组
所以我试图想出一个转换a的函数;
数据类型,变成一个std::tuple
;
它应该在一般情况下工作,具有任意数量的混合类型参数,对的格式是:
- “汽车”永远是一种类型,
- 'cdr' 将永远是一个
std::pair
,- 除了最里面的情况,“cdr”本身就是一个类型
(但是这可能是一个std::pair
本身,因为类型是任意的)。
- 除了最里面的情况,“cdr”本身就是一个类型
我要检索的参数的数量和类型是通过可变参数模板参数预先知道的。
我目前的进度有点低,我一直在尝试一些事情,但是我需要的代码似乎是这样的;
但是我似乎找不到自动生成它的方法,我尝试了这种Sequence<int...>
方法,但是没有运气,但是我确实认为这是我需要考虑的那些方面,例如有一个 get 方法,它需要一个变量索引的数量,并使用这些来查找多次,使用普通的 get 方法?
c++ - 从 std::tuple 开始创建子元组
让我们假设std::tuple<some_types...>
给定a。我想创建一个新std::tuple
的,其类型是在[0, sizeof...(some_types) - 2]
. 例如,假设起始元组是std::tuple<int, double, bool>
. 我想获得一个定义为的子元组std::tuple<int, double>
。
我对可变参数模板很陌生。作为第一步,我尝试编写一个struct
负责存储不同类型的原始std::tuple
文件,目的是创建一个相同类型的新元组(如 中std::tuple<decltype(old_tuple)> new_tuple
)。
我想做的是:
下一步是丢弃参数包中的最后一个元素。我怎样才能访问type
存储的几个type_list
?以及如何丢弃其中一些?
谢谢。
c++ - 我可以用 openmp 迭代 C++11 std::tuple 吗?
我有下面的代码来迭代std::tuple
。代码来自这里。
现在,我想for_each
用 openmp 执行这个循环,就像我可以在for
. 有什么诀窍可以使这成为可能吗?
注意:您可以修改上述代码或使用您自己的任何其他版本for_each
。
c++ - 所有的 std::tuple 构造函数都是必需的吗?
std::tuple
除其他外,包含以下构造函数:
两者都有等效的描述,因为它们用对应的值初始化每个元素args
。唯一的区别是在第二个参数被转发。
根据我对右值引用的理解,我不明白为什么需要第一个版本,因为可以将相同的参数传递给第二个版本。引用将被转发,没有人会更明智,特别是因为没有提到移动语义。
任何人都可以解释是什么使这两个构造函数都是必要的吗?
c++11 - std::tuple_element 需要深度模板实例化
在这里http://en.cppreference.com/w/cpp/utility/tuple/tuple_element给出了 std::tuple_element 的可能实现。
但是,如果元组有很多参数(超过 100 或 200 个参数),这个实现需要深度递归实例化。
Q1:为什么C++11没有添加特殊操作符来按索引获取元素?像 tuple[2] 或 tuple[0] ?
Q2:是否可以减少深度实例化?例如,在 D 语言中,更多的模板算法(在 typetuple 中)需要 O(log(N) ) 深度实例化。
编辑: Q1:为什么 C++11 没有添加特殊运算符来按索引从可变参数模板中获取元素?像模板< class ...T> struct index{ typedef T[3] third_element;}
c++ - 带有元组参数的函数的编译器混淆
我正在使用 Apple 的 LLVM 4.2 编译器来编译这个 C++ 代码。我已经用不同的元组组合重载了一个成员函数,并且我相信我正在正确调用其中的一个,但编译器发现了歧义。本质上,我试图在下面调用方法 (1),但编译器发现方法 (2) 也可以接受/兼容。这是为什么?我打开了 C++11 标志。
c++ - 通过索引c ++ 11访问元组元素
这不是秘密,std::get<i>(tuple)
惹恼了许多程序员。
而不是它,我想使用类似tuple[i]
.
所以我试图模拟它。
问:这段代码有什么问题?即此代码是否可用?如果可用,为什么不std::tuple
这样实现?
c++ - 从元组中提取变量时崩溃
出于某种原因,当我尝试使用 中std::cerr
的变量时std::tuple
,我的程序崩溃了。我的猜测是std::get<int>( std::tuple )
返回乱码。由于std::tuple
标准中的一些奇怪的措辞,或者 a错误的实施)?例如,从副本中,当您尝试阅读一个(即std::get
)等时会发生一些愚蠢的事情?
编辑:这个问题是抽象的,不一定是关于下面的代码,而是提供关于 std::tuple 的信息,我(和其他阅读这篇文章的人)将来可能能够使用。
更新:也适用于 MinGW GCC 4.4.1。
更新:
我刚刚注意到我的代码在 ideone.com 上运行:
我在桌面上使用的编译器是 MinGW 的 GCC 4.8.1-4。这是编译器错误吗?