根据《STL源码剖析》这段节选描述,实现如下代码进行测试

#include "2jjalloca.h"
#include <vector>
#include <iostream>
#include <memory> class INT {
public:
INT(int i) :
m_int(i) {
cout << "INT()" << endl;
}
INT(const INT& o) :
m_int(o.m_int) {
cout << "Copy INT()" << endl;
}
int value() const {
return m_int;
}
private:
int m_int;
}; ostream& operator<<(ostream& o, const INT& i) {
o << i.value();
return o;
} int main(int argc, char **argv) { vector<INT, JJ::allocator<INT>> a = vector<INT, JJ::allocator<INT>>(,
INT());
// INT* p = new char[sizeof(INT) * 2];
cout << endl;
void* p = ::operator new(sizeof(INT) * );
uninitialized_copy(a.begin(), a.begin() + , (INT*) p);
INT* p1 = (INT*) p;
cout << p1[] << ' ' << p1[] << ' ' << p1[] << ' ';
cout << endl;
}
INT()
_allocate
_construct
Copy INT()
_construct
Copy INT()
_construct
Copy INT()
_construct
Copy INT() Copy INT()
Copy INT()
1 1 0
_destroy
_destroy
_destroy
_destroy
_deallocate

经过测试,的确有拷贝构造。

修改下

int main(int argc, char **argv) {
vector<INT, JJ::allocator<INT>> a = vector<INT, JJ::allocator<INT>>(,
INT());
// INT* p = new char[sizeof(INT) * 2];
cout << endl;
// void* p = ::operator new(sizeof(INT) * 2);
uninitialized_copy(a.begin(), a.begin() + , a.begin() + );
// INT* p1 = (INT*) p;
// cout << a[1] << ' ' << a[1] ;
cout << endl;
}
INT()
_allocate
_construct
Copy INT()
_construct
Copy INT()
_construct
Copy INT()
_construct
Copy INT() Copy INT()
Copy INT() _destroy
_destroy
_destroy
_destroy
_deallocate

这点不符合STL描述,依旧调用了copy constructor

uninitialized_copy()效果试验的更多相关文章

  1. 关于Mongodb的全面总结

    MongoDB的内部构造<MongoDB The Definitive Guide> MongoDB的官方文档基本是how to do的介绍,而关于how it worked却少之又少,本 ...

  2. IOS 关于扬声器和听话筒的设置 ----自己试验过的,可以达到扩音器和听筒播放的效果

    今下午项目中使用到了 扬声器和听筒的设置,我项目中是这样的,有一个聊天设置,聊天设置有一个使用扬声器 播放声音的设置. 这个设置是,当你打开那个开关的话,你在聊天中都可以根据你的使用来任意的播放声音, ...

  3. [转]Android试验:如果View的ID相同会出现什么效果?

    1.实验:通过布局编辑器强行指定两个button id相同,然后在代码中通过findViewById()获得句柄后修改其文本.  实验结果:只有一个button的文本变化了,另一个不受影响.  2.实 ...

  4. 【特别推荐】小伙伴们惊呆了!8个超炫的 Web 效果

    CodePen 是一个在线的 HTML.CSS 和 JavaScript 代码编辑器,能够编写代码并即时预览效果.你在上面可以在线展示自己的作品,也可以看到其他人在网页中实现的各种令人惊奇的效果. 今 ...

  5. 利用CSS3D效果制作简易旋转木马效果

    最近看一下css3d的一些特性,想着也实验学习一下,制作个小demo之类的.就练习了一下.开发一个粗糙的选择木马效果,如图 其实就是找到角度和位置,计算每根柱子的旋转角度摆放到3d空间的置顶位置即可. ...

  6. 惊艳!9个不可思议的 HTML5 Canvas 应用试验

    HTML5 <canvas> 元素给网页中的视觉展示带来了革命性的变化.Canvas 能够实现各种让人惊叹的视觉效果和高效的动画,在这以前是需要 Flash 支持或者 JavaScript ...

  7. WPF 大数据加载过程中的等待效果——圆圈转动

    大家肯定遇到过或将要遇到加载大数据的时候,如果出现长时间的空白等待,一般人的概念会是:难道卡死了? 作为一个懂技术的挨踢技术,即使你明知道数据量太大正在加载,但是假如看不到任何动静,自己觉得还是一种很 ...

  8. 20个漂亮 CSS3 按钮效果及优秀的制作教程

    在这篇文章中,我们编译了一组有用的 CSS3 动画按钮教程和引人注目的实验.正如我们都知道的,CSS3在网页设计方面是最重要和最关键的,可以使您的网站对访客更具吸引力和互动性.你可以学习这些教程和试验 ...

  9. 未来的 Web:九个不可思议的 WebGL 应用试验

    WebGL 技术允许把 JavaScript 和 OpenGL ES 2.0 结合在一起,通过增加 OpenGL ES 2.0 的一个 JavaScript 绑定,WebGL 可以为 HTML5 Ca ...

随机推荐

  1. vue 单文件组件中样式加载

    在写单文件组件时,一般都是把标签.脚本.样式写到一起,这样写个人感觉有点不够简洁,所以就想着把样式分离出去. 采用import加载样式 在局部作用域(scoped)采用@import加载进来的样式文件 ...

  2. HTML页面转换为Sharepoint母版页(实战)

    分享人:广州华软 极简 一. 前言 SharePoint有母版页.布局页.母版页存放着如头部(顶部菜单.导航),底部等比较通用部分,通常网站只需一套即可:而布局页,则存放着主要内容部分,根据页面需要, ...

  3. Java-获取年月日对应的天干地支

    一.概述 本次是以java语言开发为例,计算出年月日对应的天干地支. 二.代码 public class MyDate { /** * 对于年月日的天干地支 */ private int year_g ...

  4. Html5 Canvas介绍

    1. 获取绘图上下文 var mycanvas = document.getElementById('mycanvas'); var context = mycanvas.getContext('2d ...

  5. 重庆3Shape Dental System技术支持

    Dental System 2014中的一些新的功能:为提高生产力增添了自动冠功能软件会自动根据位置设计冠的形状,以适应周围的牙齿和拮抗剂.新的强大的用户体验优化了工作流程和一个新的重新设计的用户界面 ...

  6. MySQL:select command denied to user for table 'proc'案例

    使用EMS MySQL Manager Pro(3.4.0.1)连接MySQL 5.6.20时,报错:"SELECT command denied to user xxx@xxx.xxx.x ...

  7. shiro经典通俗易懂javase例子

    package com.cun; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.*; import org. ...

  8. cvc-elt.1: Cannot find the declaration of element 'beans'Failed to read schema document 'http://www.springframework.org/schema/beans/spring- beans-3.0.xsd'

    Multiple annotations found at this line: - cvc-elt.1: Cannot find the declaration of element 'beans' ...

  9. eclipse 导入gradle引入多模块项目,引入eclipse后变成了好几个工程

    1.eclipse  导入gradle 项目 ,选择项目文件夹. 2.导入完成后,文档结构变成 ,多个子项目并列了,而且互不依赖,没有层级结构了. 3.点击项目目录,右上角这个小箭头,选择projec ...

  10. PIC单片机基础1

    1.PIC单片机总线结构——哈佛结构:即指令和数据空间是完全分开的,所以与常见的微控制器不同的一点是,程序和数据总线可以采用不同的宽度.以PIC16F684单片机为例,数据总线是8位的,但指令总线位数 ...