深入理解vector的拷贝构造
2017-05-06 22:44
218 查看
腾讯面试题:请问vector的拷贝构造干了些什么?
拿到这道题可能很多人都已经暗自里庆幸,对于学习过过数据结构的人,对于vector这个结构体一定不会陌生,但是如果在面试的过程中面试官考到了这道题我们要该如何来系统的答出令面试官满意的答案。
下面我们按照一定的条理从下面几个步骤来回答这个问题:
(1)第一点应该清楚vector使用的是深拷贝;
(2)选择合适的拷贝算法(first,last,ret)
在vector的拷贝过程中,为了提升vector进行拷贝构造的效率,我们在vector的实现中要做相应的类型萃取;开空间时可以开容量大小也可以开size大小,同时开空间的过程又免不了去调用空间配置器;
(3)拷贝两类:
(一)对于POD类型直接采用memcpy进行拷贝;
(二)对于非POD类型需要采用for循环加new定位表达式;
(4)迭代器萃取时直接取其中的valueType类型
(5)针对得到的valueType类型进行相应的类型萃取
(6)最后切记拷贝完成之后释放掉原来的旧空间
拿到这道题可能很多人都已经暗自里庆幸,对于学习过过数据结构的人,对于vector这个结构体一定不会陌生,但是如果在面试的过程中面试官考到了这道题我们要该如何来系统的答出令面试官满意的答案。
下面我们按照一定的条理从下面几个步骤来回答这个问题:
(1)第一点应该清楚vector使用的是深拷贝;
(2)选择合适的拷贝算法(first,last,ret)
在vector的拷贝过程中,为了提升vector进行拷贝构造的效率,我们在vector的实现中要做相应的类型萃取;开空间时可以开容量大小也可以开size大小,同时开空间的过程又免不了去调用空间配置器;
(3)拷贝两类:
(一)对于POD类型直接采用memcpy进行拷贝;
(二)对于非POD类型需要采用for循环加new定位表达式;
(4)迭代器萃取时直接取其中的valueType类型
(5)针对得到的valueType类型进行相应的类型萃取
(6)最后切记拷贝完成之后释放掉原来的旧空间
相关文章推荐
- 深入理解C/C++中的写时拷贝
- 深入了解构造函数,析构函数,拷贝构造,赋值函数的原理
- 深入理解JavaScript中的堆与栈 、浅拷贝与深拷贝
- c++ 深入理解拷贝与赋值及其他合成函数
- 深入探索C++对象模型--详解深拷贝与浅拷贝以及拷贝构造的建构
- 深入理解程序构造
- 深入理解 python 中的赋值、引用、拷贝、作用域
- 深入C++的拷贝构造和赋值函数 (深拷贝,浅拷贝)
- 深入理解 python 中的赋值、引用、拷贝、作用域
- Java 集合深入理解(12):古老的 Vector
- Java继承构造的深入理解
- csapp 、sicp 、深入理解计算机系统、 计算机程序的构造和解释
- 深入理解vector list deque——存储结构机理
- 深入理解vector list deque——存储结构机理
- 理解 Delphi 的类(十一) - 深入类中的方法[10] - 构造方法与析构方法
- 深入理解Vector
- 深入理解java中的拷贝机制
- 深入理解 JavaScript 对象和数组拷贝
- 【SqlServer2005+ 查询优化】深入理解SQL Server查询优化器–构造执行计划
- 带你深入理解STL之Vector容器