标签: struct

未使用的成员变量会占用内存吗?

初始化成员变量而不引用或使用它会在运行时进一步占用RAM,还是编译器只是忽略该变量?

struct Foo {
    int var1;
    int var2;

    Foo() { var1 = 5; std::cout << var1; }
};
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,成员'var1'得到一个值,该值然后显示在控制台中。但是,根本不使用“ Var2”。因此,在运行时将其写入内存将浪费资源。编译器会考虑这种情况,而只是忽略未使用的变量,还是Foo对象总是相同大小,而不管是否使用其成员?

c++ memory struct

88
推荐指数
5
解决办法
6891
查看次数

为什么C++不允许使用匿名结构?

一些C++编译器允许匿名联合和结构作为标准C++的扩展.这有点语法糖,偶尔会非常有帮助.

阻止它成为标准一部分的理由是什么?是否存在技术障碍?一个哲学的?或者仅仅是不足以证明它的合理性?

这是我正在谈论的样本:

struct vector3 {
  union {
    struct {
      float x;
      float y;
      float z;
    };
    float v[3];
  };
};
Run Code Online (Sandbox Code Playgroud)

我的编译器会接受这个,但它警告"无名结构/联合"是C++的非标准扩展.

c++ struct unions

87
推荐指数
3
解决办法
5万
查看次数

为什么.Net 4.0中的新Tuple类型是引用类型(类)而不是值类型(struct)

有谁知道答案和/或有关于它的意见?

由于元组通常不会很大,我认为使用结构比使用类更有意义.怎么说你?

performance struct class .net-4.0

87
推荐指数
3
解决办法
2万
查看次数

将struct初始化/重置为零/ null

struct x {
    char a[10];
    char b[20];
    int i;
    char *c;
    char *d[10];
};
Run Code Online (Sandbox Code Playgroud)

我正在填充此结构,然后使用值.在下一次迭代中,我想在重新开始重用之前0null之前重置所有字段.

我怎样才能做到这一点?我可以使用memset或者必须通过所有成员然后单独进行吗?

c struct initialization

86
推荐指数
6
解决办法
16万
查看次数

结构体实现接口是否安全?

我似乎记得读过一些关于结构通过C#在CLR中实现接口有什么不好的东西,但我似乎无法找到任何关于它的东西.这不好吗?这样做会产生意想不到的后果吗?

public interface Foo { Bar GetBar(); }
public struct Fubar : Foo { public Bar GetBar() { return new Bar(); } }
Run Code Online (Sandbox Code Playgroud)

c# struct interface

84
推荐指数
3
解决办法
5万
查看次数

将c-struct放入NSArray的最佳方法是什么?

存储c结构的常用方法是NSArray什么?优点,缺点,内存处理?

值得注意的是,有什么之间的区别valueWithBytesvalueWithPointer -由Justin和鲶鱼下面提出.

这是 Apple valueWithBytes:objCType:对未来读者讨论的链接 ......

对于一些横向思考和更多关注性能,Evgen提出了STL::vectorC++中使用的问题.

(这引发了一个有趣的问题:是否有一个快速的c库,不是STL::vector很轻,但更轻,允许最小的"整理数组处理"......?)

那么原来的问题......

例如:

typedef struct _Megapoint {
    float   w,x,y,z;
} Megapoint;
Run Code Online (Sandbox Code Playgroud)

那么:在一个NSArray成语中存储一个人自己的结构的正常,最好,惯用的方式是什么?你如何处理那个成语中的记忆?

请注意,我特意寻找存储结构的通常习惯用法.当然,人们可以通过创建一个新的小班来避免这个问题.但是,我想知道实际将结构放入数组的常用习惯,谢谢.

顺便说一句,这可能是NSData的方法吗?不是最好的......

Megapoint p;
NSArray *a = [NSArray arrayWithObjects:
    [NSData dataWithBytes:&p length:sizeof(Megapoint)],
    [NSData dataWithBytes:&p length:sizeof(Megapoint)],
    [NSData dataWithBytes:&p length:sizeof(Megapoint)],
        nil];
Run Code Online (Sandbox Code Playgroud)

BTW作为参考点,感谢Jarret Hardie,以下是如何存储CGPoints和类似的NSArray:

NSArray *points = [NSArray arrayWithObjects:
        [NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
        [NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
        nil];
Run Code Online (Sandbox Code Playgroud)

(请参阅如何以简单的方式将CGPoint对象添加到NSArray?)

iphone cocoa struct objective-c nsarray

84
推荐指数
2
解决办法
3万
查看次数

C++ Tuple vs Struct

使用a std::tuple和仅数据之间有什么区别struct吗?

typedef std::tuple<int, double, bool> foo_t;

struct bar_t {
    int id;
    double value;
    bool dirty;
}
Run Code Online (Sandbox Code Playgroud)

从我在网上找到的,我发现有两个主要的区别:struct更具可读性,而tuple有许多可以使用的通用功能.应该有任何显着的性能差异吗?此外,数据布局是否相互兼容(可互换转换)?

c++ struct tuples

84
推荐指数
7
解决办法
3万
查看次数

尽管标记了文件-fno-objc-arc,但ARC禁止结构或联合中的Objective-C对象

ARC禁止在结构或联合中使用Objective-C对象,尽管标记了文件-fno-objc-arc?为什么会这样?

我假设如果你标记它-fno-objc-arc你没有这个限制.

iphone struct objective-c ios5 automatic-ref-counting

84
推荐指数
4
解决办法
5万
查看次数

如何检查空结构?

我定义了一个结构...

type Session struct {
    playerId string
    beehive string
    timestamp time.Time
}
Run Code Online (Sandbox Code Playgroud)

有时我给它分配一个空会话(因为nil是不可能的)

session = Session{};
Run Code Online (Sandbox Code Playgroud)

然后我想检查,如果它是空的:

if session == Session{} {
     // do stuff...
}
Run Code Online (Sandbox Code Playgroud)

显然这不起作用.我怎么写呢?

struct go

84
推荐指数
5
解决办法
9万
查看次数

为什么C++支持在结构中成员分配数组,但一般不支持?

我理解不支持成员分配数组,因此以下方法不起作用:

int num1[3] = {1,2,3};
int num2[3];
num2 = num1; // "error: invalid array assignment"
Run Code Online (Sandbox Code Playgroud)

我只是接受了这个事实,认为该语言的目的是提供一个开放式框架,并让用户决定如何实现诸如复制数组之类的东西.

但是,以下工作正常:

struct myStruct { int num[3]; };
struct myStruct struct1 = {{1,2,3}};
struct myStruct struct2;
struct2 = struct1;
Run Code Online (Sandbox Code Playgroud)

该数组num[3]是从其实例中成员分配struct1到其实例中的struct2.

为什么结构支持成员方式的数组,但一般情况下不支持?

编辑:Roger Pate 在结构中的线程std :: string中的注释- 复制/赋值问题?似乎指向答案的大致方向,但我不知道自己确认.

编辑2:许多出色的回应.我之所以选择Luther Blissett,是因为我对这种行为背后的哲学或历史原理很感兴趣,但James McNellis对相关规范文档的引用也很有用.

c c++ arrays struct variable-assignment

82
推荐指数
2
解决办法
7481
查看次数