当前位置: 首页 > news >正文

志迅东莞网站建设钻井网站建设

志迅东莞网站建设,钻井网站建设,长沙找人做企业网站文案,苏州做网站设计【c随笔16】reserve之后#xff0c;使用std::copy会崩溃? 一、reserve之后#xff0c;使用std::copy会崩溃?二、函数std::reserve、std::resize、std::copy1、std::resize#xff1a;2、std::reserve#xff1a;3、std::copy#xff1a; 三、崩溃原因分析方案1、你可以使… 【c随笔16】reserve之后使用std::copy会崩溃? 一、reserve之后使用std::copy会崩溃?二、函数std::reserve、std::resize、std::copy1、std::resize2、std::reserve3、std::copy 三、崩溃原因分析方案1、你可以使用 std::back_inserter 插入迭代器来向 destination 中插入元素代码如下方案2、resize将容器大小调整同时新增的元素将会被默认初始化为0这样std::copy中的destination.begin()就可用访问到元素了 原创作者郑同学的笔记 原创地址https://zhengjunxue.blog.csdn.net/article/details/134272501 一、reserve之后使用std::copy会崩溃? 先看代码 #include iostream #include vector #include algorithmint main() {std::vectorint source { 1, 2, 3, 4, 5 };std::vectorint destination;// 在目标vector中预留足够的空间避免不必要的重新分配destination.reserve(source.size());// 使用std::copy将source中的元素复制到destination中std::copy(source.begin(), source.end(), destination.begin());// 打印复制后的destination内容for (int num : destination) {std::cout num ;}std::cout std::endl;return 0; }运行崩溃截图如下 我们先简单说下std::reserve、std::resize、std::copy三个函数的用法然后再说崩溃的原因。 二、函数std::reserve、std::resize、std::copy 1、std::resize std::resize 用于改变容器的大小并可以指定新元素的初值。如果新的大小大于当前大小则在末尾添加新元素如果新的大小小于当前大小则删除多余的元素。使用 resize 会改变容器内的元素个数并可能导致元素值的改变。 示例代码如下 std::vectorint vec {1, 2, 3}; vec.resize(5); // 将容器大小调整为 5新增的元素将会被默认初始化为0 vec.resize(3); // 将容器大小调整为 3多余的元素将会被删除2、std::reserve std::reserve 用于预留容器的空间但不会改变容器的大小。当你知道容器将要存储大量元素时可以使用 reserve 来提前分配足够的内存避免容器多次扩张操作。使用 reserve 不会改变容器中的元素个数只是预分配了足够的空间。 示例代码如下 std::vectorint vec; vec.reserve(100); // 预留至少能容纳100个元素的空间3、std::copy template class InputIterator, class OutputIterator OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result);std::copy 用于将一个范围内的元素复制到另一个范围它可以用于将一个容器中的元素复制到另一个容器中 注意事项 确保输出范围有足够的空间来容纳被复制的元素否则可能会导致未定义的行为。当处理容器时确保输出容器有足够的容量或者使用插入迭代器如 std::back_inserter来确保动态分配足够的空间。 int source[] {1, 2, 3, 4, 5}; int destination[5];// 使用 std::copy 将 source 数组的内容复制到 destination 数组 std::copy(std::begin(source), std::end(source), std::begin(destination));三、崩溃原因分析 在这个代码中当你使用 std::copy 将 source 中的元素复制到 destination 中时会导致程序崩溃的原因是因为 destination 容器的空间虽然预留了但是其中并没有实际的元素所以无法直接通过 destination.begin() 来访问 destination 的首个元素。 在使用 std::copy 进行复制时目标容器必须有足够的空间来容纳被复制的元素并且使用 std::back_inserter 或者确保目标容器大小与源容器相同的方式来进行插入操作。如果目标容器没有足够的空间或者没有正确的插入迭代器就会导致未定义的行为可能导致程序崩溃。 要修复这个问题有两个方法你可以使用 方案1、你可以使用 std::back_inserter 插入迭代器来向 destination 中插入元素代码如下 #include iostream #include vector #include algorithmint main() {std::vectorint source { 1, 2, 3, 4, 5 };std::vectorint destination;// 在目标vector中预留足够的空间避免不必要的重新分配destination.reserve(source.size());// 使用std::copy将source中的元素复制到destination中std::copy(source.begin(), source.end(), std::back_inserter(destination));// 打印复制后的destination内容for (int num : destination) {std::cout num ;}std::cout std::endl;return 0; }方案2、resize将容器大小调整同时新增的元素将会被默认初始化为0这样std::copy中的destination.begin()就可用访问到元素了 #include iostream #include vector #include algorithmint main() {std::vectorint source { 1, 2, 3, 4, 5 };std::vectorint destination;// 在目标vector中预留足够的空间避免不必要的重新分配destination.resize(source.size());// 使用std::copy将source中的元素复制到destination中std::copy(source.begin(), source.end(), destination.begin());// 打印复制后的destination内容for (int num : destination) {std::cout num ;}std::cout std::endl;return 0; }
http://www.zqtcl.cn/news/328910/

相关文章:

  • 如何快速提升网站pr淮北房产网
  • 微网站和微信广州营销型网站建设团队
  • 企业网站制作托管微信建站网站
  • h5网站如何做排名济南网站建设选聚搜网络
  • 网站建设 手机wordpress 仿煎蛋主题
  • 织梦可以仿所有网站吗电子商务网站建设臧良运课后答案
  • 怎样创建个人购物网站wordpress没有外观
  • 衡水手机网站建设公司计算机大专学历有用吗
  • 有哪些网站做的很好桐乡市建设局官方网站
  • 做公众号和网站一样吗免费正能量网站下载ww
  • 使用帝国做软件下载网站源码顺义区做网站的公司
  • 网站用什么颜色成都网站建设公司服务
  • 重庆手机网站方案设计凡科建站网站怎么保存发给别人
  • 北京住房建设官方网站xampp wordpress服务器
  • 卖衣服的网站建设素材网站免费短视频
  • 萍乡网站建设哪家公司好搜索引擎推广预算
  • 如何做网站不容易被攻击网站定位策划书
  • 自己做网站去哪买服务器多说wordpress
  • 网站排名突然没有了网站开发背景图
  • 比较容易做流量的网站设计模板素材网站
  • 电商网站建设 网站定制开发兰州展柜公司网站建设
  • 临沂城乡建设管理局网站腾讯体育
  • 一个空间怎么放两个网站ps个人网站首页怎么制作
  • 云南通耀建设工程有限公司网站国际购物网站平台有哪些
  • 网站建设外包服务上海网站建设公司怎么分辨好坏
  • 建筑类企业网站模板下载微信搜索推广
  • 上海网站备案在哪里wordpress短链接关键字
  • 金诚财富网站是谁做的建站技术博客
  • 黔东南网站设计公司儿童衣服刘涛做代言那个是什么网站
  • 网站首页样式百度推广是什么工作