如何初始化 类型是结构体的 vector?
大家好, 我定义了一个结构体:
- C/C++ code
typedef struct iRandom{ int iVal[4];}iRandom;然后想这样: vector <iRandom> templateStipples(0);就是在申明这中vector的时候把vector里面的 每个结构体里面的 每个数据都初始化为零. 也就是把所有的 iVal[0], iVal[1], iVal[2], iVal[3] 都初始化为 0
这个如何做? 貌似我只写个 0 不对
谢谢大家
[解决办法]
用类吧,搞个构造函数
[解决办法]
- C/C++ code
话说vector里面都没元素 ,怎么初始..
[解决办法]
在C++中,不流行结构体,一般都是用类,在构造函数中初始化成员。
class iRandom
{
public:
iRandom() { memset(iVal, 0, sizeof(int) * 4); }
private:
int iVal_[4];
}
把这样的类对象放在vector里面,成员就会被自动初始化。
[解决办法]
- C/C++ code
只有在结构体初始化,不是在vector初始typedef struct iRandom{ int iVal[4]; iRandom(){memset(iVal, 0, sizeof(int) * 4);}}
[解决办法]
[解决办法]
在C++里面 结构体也可以用构造函数,然后memset就好了,不过最好不要再c++里面换用C的东西,你可以在结构体里面也用vector
[解决办法]
说错了,是用类,然后里面用vector
[解决办法]
初始化函数或构造函数里,自己赋值
[解决办法]
- C/C++ code
#include <iostream>using namespace std;typedef struct iRandom{ int iVal[4];}iRandom;int main(){ int a[4] = {0, 1, 2, 3}; struct iRandom r; for(int i = 0; i < 4; i++) r.iVal[i] = a[i]; for(int i = 0; i < 4; i++) cout << r.iVal[i] << endl; system("pause"); return 0;}
[解决办法]
- C/C++ code
#include <iostream>using namespace std;typedef struct iRandom{ int iVal[4];}iRandom;int main(){ /*int a[4] = {0, 1, 2, 3};*/ struct iRandom r; //for(int i = 0; i < 4; i++) //r.iVal[i] = a[i]; memset(&r, 0, sizeof(iRandom)); for(int i = 0; i < 4; i++) cout << r.iVal[i] << endl; system("pause"); return 0;}