首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么初始化vector

2012-02-12 
如何初始化vectorstructDeviceInfo{charstrName[64]charszID[3]charstrIP[16]}vector DeviceInfo*de

如何初始化vector
struct   DeviceInfo
{
char   strName[64];
char   szID[3];
char   strIP[16];
};

vector <DeviceInfo*>   devInfo

for   (   int   i   =   0;   i   <   8;   ++i)
{
DeviceInfo   *   device;

sprintf(device-> strName,   "aaa ");
sprintf(device-> szID,   "001 ");
sprintf(device-> strIP,   "109.52.22.5 ");

devInfo.push_back(device);
}
最后push_back出错,请问是哪里导致的错误那?
我将for循环去掉又没有问题了

[解决办法]
你的device没有分配内存啊。
[解决办法]
没有分配内存 在前面new一个内存就行了 不过后面要注意delete
[解决办法]
还有 sprintf(device-> szID, "001 ");
超出szID[3]范围
[解决办法]
for ( int i = 0; i < 8; ++i)
{
DeviceInfo * device;

sprintf(device-> strName, "aaa ");
sprintf(device-> szID, "001 ");
sprintf(device-> strIP, "109.52.22.5 ");

devInfo.push_back(device);
}

DeviceInfo * device;//这是一个指针,指向那里?
所以下面的
sprintf(device-> strName, "aaa ");
sprintf(device-> szID, "001 ");
sprintf(device-> strIP, "109.52.22.5 ");
都是非法的
-----------------
在循环外申请内存空间:DeviceInfo devices[8];
sprintf(devices[i].strName, "aaa ");

热点排行