问题标签 [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.

0 投票
2 回答
6668 浏览

c++ - 如何从元组中获取第 N 种类型?

我想制作一个模板,我可以在其中输入一个索引,它会给我那个索引的类型。我知道我可以做到这一点,decltype(std::get<N>(tup))但我想自己实现。例如,我想这样做,

...它会给我位置的类型N - 1(因为从 0 开始索引的数组)。我怎样才能做到这一点?谢谢。

0 投票
2 回答
12103 浏览

c++ - std::get 是如何工作的?

在尝试自己制作一个std::get<N>(std::tuple)方法之后,我不太确定它是如何由编译器实现的。我知道std::tuple有这样的构造函数,

但具体args...分配给什么?我认为这对于了解如何工作很有用,std::get因为需要将参数放置在某个地方才能访问它们......

0 投票
1 回答
427 浏览

templates - 解包 std::pair>> 到元组

所以我试图想出一个转换a的函数;

数据类型,变成一个std::tuple

它应该在一般情况下工作,具有任意数量的混合类型参数,对的格式是:

  • “汽车”永远是一种类型,
  • 'cdr' 将永远是一个std::pair,
    • 除了最里面的情况,“cdr”本身就是一个类型
      (但是这可能是一个std::pair本身,因为类型是任意的)。

我要检索的参数的数量和类型是通过可变参数模板参数预先知道的。

我目前的进度有点低,我一直在尝试一些事情,但是我需要的代码似乎是这样的;

但是我似乎找不到自动生成它的方法,我尝试了这种Sequence<int...>方法,但是没有运气,但是我确实认为这是我需要考虑的那些方面,例如有一个 get 方法,它需要一个变量索引的数量,并使用这些来查找多次,使用普通的 get 方法?

0 投票
4 回答
4625 浏览

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?以及如何丢弃其中一些?

谢谢。

0 投票
1 回答
673 浏览

c++ - 我可以用 openmp 迭代 C++11 std::tuple 吗?

我有下面的代码来迭代std::tuple。代码来自这里

现在,我想for_each用 openmp 执行这个循环,就像我可以在for. 有什么诀窍可以使这成为可能吗?

注意:您可以修改上述代码或使用您自己的任何其他版本for_each

0 投票
2 回答
421 浏览

c++ - 所有的 std::tuple 构造函数都是必需的吗?

std::tuple除其他外,包含以下构造函数:

两者都有等效的描述,因为它们用对应的值初始化每个元素args。唯一的区别是在第二个参数被转发。

根据我对右值引用的理解,我不明白为什么需要第一个版本,因为可以将相同的参数传递给第二个版本。引用将被转发,没有人会更明智,特别是因为没有提到移动语义。

任何人都可以解释是什么使这两个构造函数都是必要的吗?

0 投票
3 回答
1729 浏览

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;}

0 投票
1 回答
153 浏览

c++ - 带有元组参数的函数的编译器混淆

我正在使用 Apple 的 LLVM 4.2 编译器来编译这个 C++ 代码。我已经用不同的元组组合重载了一个成员函数,并且我相信我正在正确调用其中的一个,但编译器发现了歧义。本质上,我试图在下面调用方法 (1),但编译器发现方法 (2) 也可以接受/兼容。这是为什么?我打开了 C++11 标志。

0 投票
1 回答
3297 浏览

c++ - 通过索引c ++ 11访问元组元素

这不是秘密,std::get<i>(tuple)惹恼了许多程序员。

而不是它,我想使用类似tuple[i].

所以我试图模拟它。

问:这段代码有什么问题?即此代码是否可用?如果可用,为什么不std::tuple这样实现?

0 投票
1 回答
247 浏览

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。这是编译器错误吗?