2016-11-25 39 views
-4

所以我对C++有点问题。稍后在结构类型中指定数组大小(C++)

我有这样的结构:

typedef struct{ 
    int n; 
    int x[]; 
    int y[]; 
} MyStruct; 

而我的问题是,我无法弄清楚如何指定X在后面的功能大小,Y阵列因为它是从一个输入来并且以前不知道。它似乎是一个动态的工作,但我希望它是静态的。 顺便说一句,从这个结构我的变量也是一个数组。

E.g.在C#中,它的工作是这样的:

MyStructVariable[ (an index) ].x = new int[value]; 

我是新来的C++对不起,如果这是一件微不足道的小事,但我不能弄明白。 感谢您的帮助!

+1

所以,你想拥有动态数组。 'int * x;',然后你可以做'MyStruct值; value.x = new int [value]'(不要忘记之后删除它!)。除此之外,在C++中,您不需要键入结构。或者,更好的是,使用C++解决方案 - “std :: vector '。 –

+1

@AlgirdasPreidžius我首先推荐'std :: vector '。 –

+0

@πάνταῥεῖ是的,在我写了我的初步评论后想到了这一点。 –

回答

0

例如,在C#中,它的工作是这样的:

MyStructVariable[ (an index) ].x = new int[value]; 

C++不同于C#,特别是关于动态内存分配的处理。

你想在C++中什么是std::vector<int>

struct MyStruct { 
    std::vector<int> x; 
    std::vector<int> y; 
    MyStruct(int value) : x(value), y(value) {} 
}; 

struct MyStruct { 
    int x; 
    int y; 
}; 

std::vector<MyStruct> myVector(mysize); 
myVector[an index].x = value; 
相关问题