STL容器使用中的拷贝成本

2023-11-03

 

 

#include "stdafx.h"

#include <map>

#include <vector>

#include <list>

 

 

using namespace std;

 

//User Defined Object:

 

class CustomerObj

{

public:

 

CustomerObj():m_iObjValue(0)

{

printf("Object (0)->Default Construct!/n");

}

 

CustomerObj( int iValue ):m_iObjValue(iValue)

{

printf("Object (%d)->User define Construct!/n", m_iObjValue );

}

 

~CustomerObj()

{

printf( "Object (%d)->Destruct/n", m_iObjValue );

}

 

CustomerObj(const CustomerObj& obj )

{

m_iObjValue  = obj.m_iObjValue;

printf( "Obect (%d)->Copy Construct!/n", m_iObjValue );

}

 

CustomerObj& operator=(const CustomerObj& obj)

{

m_iObjValue = obj.m_iObjValue;

printf( "Object (%d)->Copy assignment/n", m_iObjValue );

 

return *this;

}

 

void SetObjValue( int iValue )

{

m_iObjValue = iValue;

}

 

int GetObjValue()

{

return m_iObjValue;

}

private:

int m_iObjValue;

};

 

 

//A function template to test the sequence container

 

 

template< class T >

void SEQ_Copy_Cost_Test( T TestContainer ) 

{

CustomerObj myObject;

 

printf( "push_back:(%d).>>>>>>>>/n", myObject.GetObjValue() );

TestContainer.push_back( myObject );

 

myObject.SetObjValue( 1 );

 

printf( "push_back:(%d).>>>>>>>>/n", myObject.GetObjValue() );

TestContainer.push_back( myObject );

myObject.SetObjValue( 2 );

printf( "push_back:(%d).>>>>>>>>/n", myObject.GetObjValue() );

TestContainer.push_back( myObject );

 

myObject.SetObjValue( 3 );

printf( "push_back:(%d).>>>>>>>>/n", myObject.GetObjValue() );

TestContainer.push_back( myObject );

myObject.SetObjValue( 4 );

printf( "push_back:(%d).>>>>>>>>/n", myObject.GetObjValue() );

TestContainer.push_back( myObject );

 

myObject.SetObjValue( 5 );

printf("insert:(%d) at begining.>>>>>>>>/n", myObject.GetObjValue() );

TestContainer.insert( TestContainer.begin(), myObject );

 

printf("pop_back.>>>>>>>>/n");

TestContainer.pop_back();

}

 

 

 

 

int _tmain(int argc, _TCHAR* argv[])

{

 

 

 

//Vector Container

printf("Vector Container:>>>>>>>/n");

vector< CustomerObj > VectorContainer;

SEQ_Copy_Cost_Test( VectorContainer );

 

//List Container

printf("List Container:>>>>>>>/n");

list< CustomerObj > ListContainer;

SEQ_Copy_Cost_Test( ListContainer );

 

 

 

}

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STL容器使用中的拷贝成本 的相关文章

随机推荐

  • 生成随机小数的函数python_哪个选项是random库中用于生成随机小数的函数?

    其它 一个整数 它加上100后是一个完全平方数 再加上168又是一个完全平方数 试编写代码输出该整数 要求 1 粘贴代码图片 图片需包括行号 代码不可超过6行 争取4行 2 粘贴结果图片 符合条件的整数有四个 单选题 哪个选项不能正确引用t
  • PD16 for Mac(支持M1芯片)v16.3.2(50531)中文版介绍

    PD16虚拟机中文版是mac上最强大也是最好用的虚拟机软件 Parallels Desktop Mac 16 可以显着降低磁盘 内存和CPU使用率 而且针对Windows 10更新进行了优化 更新了超过50个新功能 可以让您更充分地利用你的
  • Out-Of-Vocabulary(OOV)的理解

    OOV 问题是NLP中常见的一个问题 其全称是Out Of Vocabulary 下面简要的说了一下OOV 怎么解决 下面说一下Bert中是怎么解决OOV问题 如果一个单词不在词表中 则按照subword的方式逐个拆分token 如果连逐个
  • 汉字简/繁体转换

  • C语言:删除字符

    本题要求实现一个删除字符串中的指定字符的简单函数 函数接口定义 void delchar char str char c 其中char str是传入的字符串 c是待删除的字符 函数delchar的功能是将字符串str中出现的所有c字符删除
  • 【kernel envirment】config tiny X86 kernel with vfs

    Automatically generated file DO NOT EDIT Linux x86 4 19 0 Kernel Configuration Compiler gcc Ubuntu 7 3 0 27ubuntu1 18 04
  • cocos creator 血条跟随3d convertToUINode导致的问题,使用worldToScreen解决跟随偏离问题

    cocos creator3 3 2 实现血条跟随 一开始使用的camera的converToUINode 也是按照麒麟子大师的博客操作 结果最终的效果 在屏幕中间 血条显示正常 在屏幕边缘就开始出现偏差 x和y都有的偏差 最终也没有解决方
  • 择后自动上传html代码,GitLab + Jenkins + Webhook 实现Push代码后自动更新

    一 介绍 通常是开发后的代码先推到Gitlab上管理 然后在Jenkins里通过脚本构建代码发布 这种方式每次在发版的时候 需要人工去执行jenkins上的构建动作 有时显得过于繁琐 Gitlab的Webhook功能 通过Webhook的相
  • 九月份参加OPPO和腾讯Android面试:技术一面+二面+三面+HR四面,我的面经总结!

    之前很多时候我是拒绝说我的面试经验的 因为我们简历经历不一样问的问题也会不一样 且大厂面试光靠背几个面试题就想过还是比较难的 因此在这里提醒一下大家不要临时抱佛脚 你花几天能背下的东西 别人花几天一定能超过你的 但我们花几年沉淀的东西 人家
  • 公司企业微信小程序创建步骤

    随着新一代互联网的发展 小程序已经成为当今社会不可或缺的重要部分 它的简单易用 公司企业小程序是一种基于微信平台构建的应用程序 旨在为企业提供灵活便捷的营销服务 关于公司企业微信小程序创建步骤 可分为以下几个部分 一 申请微信公众号并创建小
  • 2022年,软件测试还能学吗?别学了,软件测试岗位饱和了...

    8年前 我懵懂的选择了软件测试这个行业 穷困潦倒的时候 爸妈给我付了2万块钱进入了一家培训机构 我怀着感激和破釜沉舟的情绪开始学习软件测试 3个月的学习时间 住群租宿舍 吃盒饭 平时上课认真听讲 周末就跑自习室 在学了基础课程之后 找工作的
  • vue中纯JS调用自定义组件

    案例以vant为例 1 首先创建index vue index js文件 2 index vue跟我们平常写的组件是一样的
  • 51单片机学习笔记(十二) - 红外遥控

    文章目录 前言 一 红外遥控的背景知识 1 人机交互 2 红外遥控的相关知识 二 原理图电路分析 三 NEC协议讲解 1 逻辑1与逻辑0的表示 2 NEC协议格式 3 NEC协议的关键点 四 代码实现 总结 前言 随着科技的发展 红外遥控器
  • 【Spring Boot整合MyBatis教程】

    Spring Boot是由Pivotal团队提供的全新框架 其设计目的是用来简化新Spring应用的初始搭建以及开发过程 该框架使用了特定的方式来进行配置 从而使开发人员不再需要定义样板化的配置 通过这种方式 Spring Boot致力于在
  • 用4种语言编写端口扫描器(Java、C、Python、Go)

    Java import java net InetSocketAddress import java net Socket import java util concurrent ExecutorService import java ut
  • Ghost-Docker(五)Nginx+SSL+Https

    使用 Ngins SSL 证书 为 Ghost 实现 Https 访问 HTTPS 协议是由 HTTP 加上 TLS SSL 协议构建的可进行加密传输 身份认证的网络协议 主要通过数字证书 加密算法 非对称密钥等技术完成互联网数据传输加密
  • ElementUI过渡动画篇

    ElementUI过渡动画篇 element官方提供的过渡动画并不能很好的满足使用 我尝试过几种过渡动画的设置方式 最终选择了Animate css 一 使用方法 引入 引入 npm install animate css save 然后在
  • 保姆级连载讲义学Python:第四篇多文件项目的演练

    多文件项目的演练 开发 项目 就是开发一个 专门解决一个复杂业务功能的软件 通常每 一个项目 就具有一个 独立专属的目录 用于保存 所有和项目相关的文件 一个项目通常会包含 很多源文件 目标 在项目中添加多个文件 并且设置文件的执行 多文件
  • FastAPI从入门到实战(10)——响应模型与状态码

    前面一直记录的是请求相关的内容 这篇文章开始记录一下响应相关的内容 包括请求模型和模型继承以及状态码等相关的内容 一个任意dict构成的基本响应 任意dict构成的响应 app06 get stu06 dict response model
  • STL容器使用中的拷贝成本

    include stdafx h include