vector如何存储结构体对象地址引用和结构体指针
vector存储结构体首地址引用和存储结构体指针有什么区别吗?
比如如下结构体:
typedef struct
{
int a;
int b;
}nodeType;
vector存储结构体指针可通过如下方法实现:
nodeType *node = new nodeType;
node->a = 1;
node->b =2;
vector<nodeType*> v;
v.push_back(st);
但使用如下方法存储结构体地址引用却不可以:
vector<nodeType&> v;
nodeType node;
node.a = 1;
node.b =2;
v.push_back(&st);
他们两者有什么本质的区别吗,不都是保存了结构体对象的首地址吗?莫非vector不支持这种结构体对象地址引用的形式?
比如如下结构体:
typedef struct
{
int a;
int b;
}nodeType;
vector存储结构体指针可通过如下方法实现:
nodeType *node = new nodeType;
node->a = 1;
node->b =2;
vector<nodeType*> v;
v.push_back(st);
但使用如下方法存储结构体地址引用却不可以:
vector<nodeType&> v;
nodeType node;
node.a = 1;
node.b =2;
v.push_back(&st);
他们两者有什么本质的区别吗,不都是保存了结构体对象的首地址吗?莫非vector不支持这种结构体对象地址引用的形式?
作者: mylovemm 发布时间: 2011-02-10
sha fa
作者: shazhudaopindao 发布时间: 2011-02-10
那么你知道C++里面的引用是必须初始化的吗?而且引用一旦引用一个对象你就不可能改变该引用指向另外一个对象,这也就意味着容器的拷贝复制就失效了。
作者: pengzhixi 发布时间: 2011-02-10
引用 2 楼 pengzhixi 的回复:
那么你知道C++里面的引用是必须初始化的吗?而且引用一旦引用一个对象你就不可能改变该引用指向另外一个对象,这也就意味着容器的拷贝复制就失效了。
那么你知道C++里面的引用是必须初始化的吗?而且引用一旦引用一个对象你就不可能改变该引用指向另外一个对象,这也就意味着容器的拷贝复制就失效了。
说的挺好.
作者: feng4206yu 发布时间: 2011-02-10
如上所述,所以vector不支持引用类型
作者: bdmh 发布时间: 2011-02-10
你也应该没听说过引用的数组吧
作者: pengzhixi 发布时间: 2011-02-10
容器里的数组是一次性开辟的,而你要求数组元素是int&,那就必须在容器开辟的同时保证每个元素都有引用,
但容器开辟内存时,你都不知道这一切的发生。
说白了就是不可能malloc一段内存,而元素类型是int&.
但容器开辟内存时,你都不知道这一切的发生。
说白了就是不可能malloc一段内存,而元素类型是int&.
作者: qq120848369 发布时间: 2011-02-10