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

网站建设界面建议青岛市有什么网络科技公司

网站建设界面建议,青岛市有什么网络科技公司,软件外包,天津网页设计工作一、介绍 在STL中一般删除的方式有两类#xff0c;一种是使用全局的std::remove(remove_if类似)#xff0c;一种是使用容器自带的erase#xff0c;前者其实并没有真正的删除数据#xff0c;而后者则是在移动时#xff0c;会有一些细节的处理#xff0c;否则要么程序崩溃…一、介绍 在STL中一般删除的方式有两类一种是使用全局的std::remove(remove_if类似)一种是使用容器自带的erase前者其实并没有真正的删除数据而后者则是在移动时会有一些细节的处理否则要么程序崩溃要么达不到删除的目的。下面就这两个函数进行一下分析说明。 在一些容器中也提供了remove如std::list方法,它和全局的std::remove还是用法区别不小的这个大家需要自己看一下。 注C20提供了std::erase这种更方便的用法 二、std::remove和 erase 1、std::remove 它的定义很简单 template class ForwardIt, class T ForwardIt remove( ForwardIt first, ForwardIt last, const T value );(C20 前) template class ForwardIt, class T constexpr ForwardIt remove( ForwardIt first, ForwardIt last, const T value );(C20 起) template class ExecutionPolicy, class ForwardIt, class T ForwardIt remove( ExecutionPolicy policy,ForwardIt first, ForwardIt last, const T value );其功能是实现删除在迭代器指定的范围内的所有满足条件的元素并返回尾后迭代器。需要说明的这里的删除并未真正删除只是移动可以在下面的例程中看到相关的示例代码。 2、erase 看一下vector中的定义 iterator erase( iterator pos );(until C11) iterator erase( const_iterator pos );(since C11)(until C20) constexpr iterator erase( const_iterator pos );(since C20)(2) iterator erase( iterator first, iterator last );(until C11) iterator erase( const_iterator first, const_iterator last );(since C11)(until C20) constexpr iterator erase( const_iterator first, const_iterator last );(since C20)它的定义很明显有两种用法一种是删除指定位置的元素一种是删除指定范围的元素。这次之所以总结一下就是因为发现错误的删除方式不再崩溃。所以得到的结论是有时崩溃有时不崩溃看环境。 3、二者混合 其实就是移动并删除被删除的元素有点拗口。就是将remove移动后的元素不再使用的空间内的元素真正删除并和迭代器等自然挂钩。看下面的例子就会明白。 三、例程 例程是以std::vector做为例程的其它的容器可能细节上会有一些差别但总体上的应用是一致的。感兴趣可以把其它的几个容器都试一下。 #include algorithm #include cctype #include iostream #include string #include vectorvoid testErase2() {std::vectorint vec{1, 5, 2, 2, 3, 4, 2, 5, 6, 8, 9, 12};vec.erase(vec.begin() 9, vec.end());std::cout cur vec:;for (auto d : vec) {std::cout d ,;}std::cout std::endl; } void testRemoveErase() {std::vectorint vec{1, 5, 2, 2, 3, 4, 2, 5, 6, 8, 9, 12};auto it std::remove(vec.begin(), vec.end(), 2);for (auto beg it; beg ! vec.end(); beg) {std::cout *beg --- std::endl;}for (auto beg vec.begin(); beg ! vec.end(); beg) {std::cout *beg --- std::endl;}vec.erase(it, vec.end());std::cout cur vec:;for (auto d : vec) {std::cout d ,;}std::cout std::endl; } void testDelVec() {std::vectorint vec{1, 5, 5, 4, 5, 6};std::cout vec size: vec.size() std::endl;for (auto it vec.begin(); it ! vec.end();) {if (*it 5) {it vec.erase(it);//vec.erase(it);//在Ubuntu22Qt环境不崩溃std::cout delete it: *it std::endl;} else {it;}}std::cout delete it end std::endl;std::cout delete it end vec value: std::endl;for (auto d : vec) {std::cout d ,;}std::cout std::endl; } void testVec() {std::vectorint vec{1, 5, 5, 4, 5, 6};auto iter std::remove(vec.begin(), vec.end(), 5);std::cout size is : vec.size() std::endl;std::cout capacity is : vec.capacity() std::endl;for (auto first vec.begin(); first iter; first) {std::cout *first ;}return; } void testStr() {std::string test_str My test this delete ORC;auto it std::remove(test_str.begin(), test_str.end(), );std::cout test_str std::endl;auto x test_str.erase(it, test_str.end());std::cout test_str: test_str std::endl; } int main() {testErase2();testRemoveErase();testDelVec();testVec();testStr();return 0; } 另外还有一些不太标准的删除方式如使用resize()函数等一般不推荐不过在某些场合下可能会用着更方便。实际场景决定实际开发的代码吧不要刻意追求某种方法。 四、总结 之所以把STL中的删除分析一下是因为早期的印象是只要使用循环遍历的方式不处理迭代器暴力删除容器内容一定会崩溃可现在发现在g中其实是不崩溃的把这两个和删除相关的函数就写了个程序跑了一下给大家一个借鉴。没有什么难度重点是细节要弄清楚。
http://www.pierceye.com/news/824632/

相关文章:

  • 网站开发技术可行性分析邢台建设企业网站
  • 有一个网站 人物模型可以做各种动作沈阳军成网站建设
  • h5移动网站开发南京企业自助建站系统
  • 开发一个企业网站报价wordpress副标题字数
  • 芜湖哪家公司做网站不错江宁网站建设方案
  • 做网站公司赚钱吗?百度搜索下载
  • 手机购物网站模版企业信息系统查询系统官网江苏
  • 礼品行业网站建设北京网站设计精选刻
  • 六安论坛网站WordPress ftp 媒体库子目录
  • 网站域名com和cn应用商店免费下载
  • 建设营销型网站多少钱比较好的网站建设网站
  • 学校网站的建设需求搜索引擎优化的缺点包括
  • 牛牛襄阳做网站郑州网站建设市场
  • 网站首页的导航栏北京公司注册核名详细流程
  • 专注昆明网站建设有哪些网络营销方式
  • 公司做两个网站网站怎么做本地映射
  • 响应式网站一般做几个尺寸百度联盟怎么做自己的网站
  • 河南做网站的wordpress 幻灯片加数字
  • 东莞网站建设建网站平面设计培训哪个好
  • 网站建设与管理专业是什么办公空间设计案例整套
  • 网站设计网站源码怎么介绍自己的学校
  • 企业网站建设兴田德润很赞运动网站建设主题
  • 沧州自适应网站建设惠安规划局建设局网站
  • 第三方商城网站建设清理wordpress模板
  • 石家庄市建设厅网站wordpress 缩略图代码
  • 网站建设开发服务费怎么做账在线教育平台
  • 南京市英语网站建设网页制作基础教程课件葛艳玲
  • 石家庄网站建设电商台州自助建站在线咨询
  • 郑州媒体网站定制开发网站建设有趣名称
  • 清远企业网站建设公司江西网站开发企业