关于容器中包含类和容器中是否有指针的有关问题
关于容器中包含类和容器中是否有指针的问题
问题1:容器的名字,(标号)cb_v是不是地址,或者能不能代表地址,它是不是有一个指向其元素的指针。
问题2:用obb给对象oba赋值时,是不是把obb的副本赋值到oba中。(标号)ca_v是不是也有一个指向其第一个元素的指针。
问题3:以下容器中是不是含有指针,含有那些指针,越具体越好。
问题4:容器分配与撤销时,所要做的工作有那些?
------解决方案--------------------
cb_v不是地址,但能取到地址。它是一个容器的对象。
第二个问题是:所有的容器中存放的都是副本。
vector中含有指针,主要是指向存放数据的。
容器分配就是申请内存,初始化。撤销就是释放内存吧。
------解决方案--------------------
变量是个悲剧的概念.忘掉他吧..
3,你可以看看vector的库,看有哪些ptr后缀 或者*. 这个跟实现有关的..
4.容器一般先 获得一段堆空间, 调用构造函数,初始化.
最后习惯,然后释放空间..
某种意义上来说,容器和普通的类没啥区别."分配撤销"和普通的类都差不多的.
------解决方案--------------------
------解决方案--------------------
2.是拷贝了副本到vector中, vector中有的版本,比如sgi stl这个版本,有指向第一个元素的指针。
4. 容器分配的时候,内存,然后调用拷贝构造函数复制到vector中。撤销嘛,自然析构,然后释放内存。
析构函数是调用元素的析构函数,如果是int doulbe 这些内置类型,是不会析构的,
因为不需要。。。存储对象,那么是需要调用对象的析构函数
------解决方案--------------------
自己啊
问题1:容器的名字,(标号)cb_v是不是地址,或者能不能代表地址,它是不是有一个指向其元素的指针。
问题2:用obb给对象oba赋值时,是不是把obb的副本赋值到oba中。(标号)ca_v是不是也有一个指向其第一个元素的指针。
问题3:以下容器中是不是含有指针,含有那些指针,越具体越好。
问题4:容器分配与撤销时,所要做的工作有那些?
- C/C++ code
#include <iostream> #include <vector> using namespace std; class cb{ public: vector<int> cb_v; }; class ca{ public: vector<class cb> ca_v; }; int main() { class cb obb; class ca oba; cout << " 为赋值之前的大小:obb 大小" << sizeof(obb) << endl; cout << "oba的大小:" << sizeof(oba) << endl; vector<int> vb_temp; for(int i = 0; i < 10; i++) { vb_temp.push_back(i); obb.pb_v = vb_temp; cout << &obb.pb_v << " " << &obb.pb_v[0] <<endl; } cout << " boa.ca_v[i] "; for(int i = 0; i < 100; i++) { oba.ca_v.push_back(obb); cout <<&oba.ca_v<< " " << &oba.ca_v[0] << " "<< &oba.ca_v[0].pb_v[0] <<endl; } cout << " 为赋值之后的大小:obb 大小" << sizeof(obb) << endl; cout << "oba的大小:" << sizeof(oba) << endl; return 0; }
------解决方案--------------------
cb_v不是地址,但能取到地址。它是一个容器的对象。
第二个问题是:所有的容器中存放的都是副本。
vector中含有指针,主要是指向存放数据的。
容器分配就是申请内存,初始化。撤销就是释放内存吧。
------解决方案--------------------
变量是个悲剧的概念.忘掉他吧..
3,你可以看看vector的库,看有哪些ptr后缀 或者*. 这个跟实现有关的..
4.容器一般先 获得一段堆空间, 调用构造函数,初始化.
最后习惯,然后释放空间..
某种意义上来说,容器和普通的类没啥区别."分配撤销"和普通的类都差不多的.
------解决方案--------------------
------解决方案--------------------
2.是拷贝了副本到vector中, vector中有的版本,比如sgi stl这个版本,有指向第一个元素的指针。
4. 容器分配的时候,内存,然后调用拷贝构造函数复制到vector中。撤销嘛,自然析构,然后释放内存。
析构函数是调用元素的析构函数,如果是int doulbe 这些内置类型,是不会析构的,
因为不需要。。。存储对象,那么是需要调用对象的析构函数
------解决方案--------------------
自己啊