问题标签 [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++ - c++11 tie name 与 boost 冲突
我正在尝试将一些代码从 to 迁移boost::tuple
,std::tuple
但我遇到了一些奇怪的错误:在我调用using namespace std
(并且从不boost
)之后,我希望一个不合格tie
的解析为std::tie
. 但是,例如,当元组包含 boost 容器指针时,这似乎会失败。
如果我用 编译g++ -std=c++0x -c test.cpp -DUSE_STD
,一切都很好。但是,如果没有-D USE_STD
,我会收到编译错误,建议g++
尝试使用boost::tuples::tie
. 我正在使用 g++ 4.8.1 和 boost 1.55.0。你认为这是boost的错误吗?还是我缺少一些规范?
c++ - 仅初始化 c++11 元组的第一个参数
最小的工作示例:
这行得通。
有没有更优雅的方法来只初始化第一个成员,就像我在评论中勾勒的那样?一个只接受参数来构造第一个元组成员而不初始化其他成员?
我问的原因?我只是对语言的语义感兴趣。
c++ - 类似 STL 对的三元组类 - 我自己滚动吗?
我想使用与 std::pair 尽可能相似的三元组类。STL 似乎没有。我不想使用太重的东西,比如Boost。是否有一些有用的 FOSS 非限制性许可三元组我可以从某个地方提升?我应该自己滚动吗?我应该完全做其他事情吗?
编辑:关于std::tuple
...
三胞胎特定的课程真的没有好处吗?我的意思是,对于元组,我做不到
现在可以吗?我不需要 typedef 个人类型组合三元组吗?
c++ - 以后可以用分配器构造 std::tuple 的元素吗?
据我了解,将 C++ 的分配器用于我自己的容器的一个原因是我可以将分配和构造分开。
现在,我想知道 std::tuples 是否可以通过以下方式实现这一点:每次构造 std::tuple 时,都会保留空间,但还没有构造对象。相反,我可以使用分配器来在我想要的时候构造第 i 个参数。
伪代码:
一个可能的问题是分配器通常绑定到一个类型,所以我需要每个类型一个分配器。另一个问题是 std::tuple 的内存是否必须在堆上分配,或者堆栈是否可以工作。两者对我来说都可以。
不过,有可能以某种方式吗?或者如果没有,这可以通过我自己编写的分配器来完成吗?
c++ - Why would indexing a map by tuple cause the "ambiguous" error in C++ in Xcode?
I'm just gonna describe how to reproduce this problem:
I needed a map whose key is a tuple, and value is an integer. So I wrote this:
And I added one tuple to this someMap
:
Everything so far was fine, until I wanted to get some value by key:
The compiler in Xcode (5.0.2) complained:
Four candidates were found in the map
header file:
So the question is: What should I do if I want to index a map
by tuple
s in C++?
c++ - 在 unordered_map 中使用元组
我想在我int
的. 我正在这样做:char
char
unordered_map
但这给了我以下错误:
我在这做错了什么?
c++ - 在运行时按索引访问 std::tuple 元素的最佳方法
我的函数at
旨在通过运行时指定的索引访问 std::tuple 元素
它具有线性复杂性。我怎样才能达到 O(1) 复杂度?
c++ - 如何在运行时检查 c++11 元组以获取可能的函数应用程序
我有一个将给定函数应用于给定函数的函数f
,std::tuple
t
如下所示,如果t
大小错误,则会生成编译时错误消息。我想知道是否可以用不同的方式编写它,以便当元组大小错误时,函数调用不会发生(可能使用enable_if
或类似的东西)并生成运行时错误消息(而不是编译时错误消息)。
提前致谢。
- 更新 -
一点点动机和解释我的想法。这可能在政治上不正确,但是说,我想将输入元组与模板函数内部定义的固定元组进行比较compare_me
(比如内部元组是make_tuple(2,3)
)。如果我可以抑制编译时错误,那么我可以只返回一个false
oncompare_me(make_tuple(1,2,3))
或compare_me(make_tuple(1,2))
and true
on make_tuple(2,3)
。更实际地,可以使用相同的技术编写模板eq
来比较两个可能不同大小的元组,并false
在它们的大小不匹配时返回。
大小不匹配可以视为编译错误。我也同意应该尽早揭露真正的失败。但我想有时人们可能想要宽容或重新考虑什么是真正的失败。这是真的,特别是考虑到有这样的函数std::tuple_cat
实际上可以给你的函数一个不同大小的元组。
c++11 - 嵌套的 std::forward_as_tuple 和分段错误
我的实际问题要复杂得多,在这里给出一个简短的具体示例来重现它似乎非常困难。所以我在这里发布一个可能相关的不同小例子,它的讨论也可能有助于解决实际问题:
实际问题不涉及std::tuple
,因此为了使示例独立,这里有一个自定义的、最小的粗略等价物:
鉴于这些定义,我得到完全相同的行为:
一般来说,行为似乎取决于编译器和优化级别。我无法通过调试找到任何东西。似乎在所有情况下,所有内容都是内联和优化的,所以我无法弄清楚导致问题的特定代码行。
如果临时对象只要有对它们的引用就应该存在(并且我没有从函数体内返回对局部变量的引用),我看不出上面的代码可能导致问题的任何根本原因以及为什么情况 A 和B 应该不同。
在我的实际问题中,即使对于单行版本(案例 A),无论优化级别如何,Clang 和 GCC 都会出现分段错误,因此问题非常严重。
当使用值代替或右值引用(例如std::make_tuple
,或node <A...>
在自定义版本中)时,问题就会消失。当元组没有嵌套时,它也会消失。
但以上都没有帮助。我正在实现的是一种用于视图的表达式模板和对许多结构的惰性求值,包括元组、序列和组合。所以我绝对需要对临时对象的右值引用。对于嵌套元组,一切都很好,例如(a, (b, c))
,对于具有嵌套操作的表达式,例如u + 2 * v
,但不是两者兼而有之。
我将不胜感激任何有助于理解上述代码是否有效、是否预计会出现分段错误、如何避免它以及编译器和优化级别可能发生的情况的评论。
c++ - 为什么不能从元组中分配一对,但可以从一对中分配元组?
我不清楚为什么分配是合法的tuple<X,Y>=pair<X,Y>
但是分配是违法的pair<X,Y>=tuple<X,Y>
这不应该是对称的吗?
使用 g++ 4.8.1 会出现以下错误: