一个有关问题:怎么在结构体中使用stl的vector,附代码

请教大家一个问题:如何在结构体中使用stl的vector,附代码
C/C++ code

#include "stdafx.h"
#include <vector>
using namespace std;

struct N
{
    vector<int> mVector;
};

int main(int argc, char* argv[])
{
    N* n = (N*)malloc(sizeof(N)); 
    n->mVector.push_back(10); 
    return 0;
}


如上,感觉是vector的内存没分配,但是又不知道该怎么做,有了解的帮解答一下,非常感谢!

------解决方案--------------------
N* n = (N*)malloc(sizeof(N)); 
这行不需要吧, stl会自动分配一部分内存, 当push_back 不够用的时候, 容器会自动增加内存。



---------------------
http://slash-directx.blogspot.com/
------解决方案--------------------
N* n = new N;
------解决方案--------------------
malloc没有调用vector的构造函数,所以vector的内存没分配,new一下即可,
真有必要的话,显示调用下vector的构造函数
------解决方案--------------------
new 一个,这个操作符会自己完成malloc、结构体构造、错误检查等工作。不要自己malloc,因为还有很多工作你没有做。而且……容器的容量是会在使用中自适应调整的,不要去malloc一块地方。
------解决方案--------------------
C/C++ code


struct N
{
    vector<int> mVector;
};

int main(int argc, char* argv[])
{
    N* n =new N;
    n->mVector.push_back(10); 
    for(int i=0;i<n->mVector.size();i++)
    {
        cout<<"vector:"<<n->mVector[i]<<endl;

    }
    delete n;
    n=NULL;
    cout<<endl;
    system("pause");

    return 0;
}

malloc没有调用vector的构造函数,所以vector的内存没分配,new一下即可, 
真有必要的话,显示调用下vector的构造函数

------解决方案--------------------
不用 New ,

struct N
{
vector<int> mVector;
};

int main(int argc, char* argv[])
{
N n;
for(int i=0;i<100;i++){
n.mVector.push_back(i);
}
vector<int>::iterator p;
for(p=n.mVector.begin();p!=n.mVector.end();p++){
printf("vector:%d\n",*p);
}

return 0;
}

如此而已
------解决方案--------------------
new一下不用分配空间了就。
------解决方案--------------------
大家不要搞混淆了 New 是指申请空间并且构造当前类的对象
例如:
N* p=new N;
这个只是希望去调用 N 的构造,但是 N 本来就没有构造函数,所以也就没有这一说

楼主的这个问题是指结构体成员变量的问题,他希望这个成员变量能够自行构造,其实编译器已经是这么做了,没必要多此一举。
------解决方案--------------------
为啥都说new, 不用啊













------------------------------
http://slash-directx.blogspot.com/