21得票6回答
Swift中的C联合类型?

我该如何在Swift中声明和使用C联合类型?我尝试过:var value: union { var output: CLongLong var input: [CInt] } 但它不起作用... 更新:我想使用 union 将一个 8 字节的数字 分割成 2 ...

21得票1回答
静态向量内部数据布局 - `union` vs `std::aligned_storage_t` - 巨大的性能差异

假设您需要实现一个 static_vector<T, N> 类,它是一个固定容量的容器,完全存储在堆栈上且永不分配,并公开类似于 std::vector 的接口。(Boost 提供了 boost::static_vector。) 考虑到我们必须为最大数量的 N 个 T 实例提供未...

21得票12回答
联合——无用的过时物还是有用的老派技巧?

我最近在当地图书馆的二手书销售中发现了一本很棒的数据结构书,《使用C语言实现数据结构》(c)1991年,只卖2美元。正如书名所示,这本书介绍了使用C编程语言的数据结构。 我买下这本书是因为知道它已经过时了,但它可能包含了许多高级的C语言主题,而这些主题在其他地方可能不会遇到。 果然,在5分...

20得票3回答
使用位域和联合体是否有效?

我使用了类似这样的结构体和位域:struct { unsigned int is_static: 1; unsigned int is_extern: 1; unsigned int is_auto: 1; } flags; 现在我想知道是否可以用un...

20得票4回答
使用unique_ptr的联合体

尝试在联合体(union)中使用unique_ptr时,当我尝试std::move或std::make_unique时,会导致段错误。 #include <iostream> #include <memory> union myUnion{ struct{s...

20得票3回答
匿名联合和结构体

你希望如何在标准的C++11/14中实现这个?因为如果我没有理解错的话,这并不是符合匿名结构体标准的代码。 我希望以与此相同的方式访问成员。template <typename some_type> struct vec { union { struct ...

20得票1回答
C++中的联合实际上是一个类吗?

一个初级开发者问我是否可能为具有POD参数的联合体重载赋值运算符,以便在将联合体的实例分配给该类型的变量时,相应的数据类型会被写入。我回答说我不认为可以,但随后尝试了以下代码。让我惊讶的是,这段代码实际上编译成功了(在Ubuntu 12.04上使用g++版本4.6.3)。union unMem...

20得票4回答
Strict aliasing和对齐问题

我需要一种安全的方式来在任意POD类型之间进行别名处理,该方式符合ISO-C++11明确考虑了n3242的第3.10/10和3.11条款或更高版本。这里有许多关于strict aliasing的问题,其中大部分涉及C而不是C ++。我找到了一个用联合体解决C问题的“解决方案”,可能使用了这个章...

20得票1回答
使用原始类型合并公共初始序列

我试图更好地理解有关联合体和共同初始序列规则的一个相当令人惊讶的发现。共同初始序列规则表示(class.mem 23): 在一个标准布局的联合体中,如果它有一个类型为T1的结构体成员处于活动状态,则可以读取另一个类型为T2的联合体成员的非静态数据成员m,前提是m是T1和T2的共同初始序...

19得票1回答
包含非平凡成员的联合体类的构造函数和拷贝构造函数

我正在尝试实现一个定制的变体类型,它使用联合存储各种不同类型的数据。在字段type_id中,我计划存储联合中存储的数据的类型。该联合包含非平凡成员。这是我目前的实现:struct MyVariant { enum { t_invalid, t_string, t_int, t_double...