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

响应式网站用什么软件做效果电商企业网站建设的一般要素有哪些6

响应式网站用什么软件做效果,电商企业网站建设的一般要素有哪些6,专业网页制作地址,网站实现微信登录一、介绍 在STL中一般删除的方式有两类,一种是使用全局的std::remove(remove_if类似),一种是使用容器自带的erase,前者其实并没有真正的删除数据,而后者则是在移动时,会有一些细节的处理,否则要么程序崩溃…

一、介绍

在STL中一般删除的方式有两类,一种是使用全局的std::remove(remove_if类似),一种是使用容器自带的erase,前者其实并没有真正的删除数据,而后者则是在移动时,会有一些细节的处理,否则要么程序崩溃,要么达不到删除的目的。下面就这两个函数进行一下分析说明。
在一些容器中也提供了remove(如std::list)方法,它和全局的std::remove还是用法区别不小的,这个大家需要自己看一下。
注:C++20提供了std::erase这种更方便的用法

二、std::remove和 erase

1、std::remove
它的定义很简单:

template< class ForwardIt, class T >
ForwardIt remove( ForwardIt first, ForwardIt last, const T& value );(C++20)
template< class ForwardIt, class T >
constexpr ForwardIt remove( ForwardIt first, ForwardIt last, const T& value );(C++20)
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 C++11)
iterator erase( const_iterator pos );(since C++11)(until C++20)
constexpr iterator erase( const_iterator pos );(since C++20)(2) 	
iterator erase( iterator first, iterator last );(until C++11)
iterator erase( const_iterator first, const_iterator last );(since C++11)(until C++20)
constexpr iterator erase( const_iterator first, const_iterator last );(since C++20)

它的定义很明显,有两种用法,一种是删除指定位置的元素,一种是删除指定范围的元素。这次之所以总结一下,就是因为发现错误的删除方式不再崩溃。所以得到的结论是,有时崩溃,有时不崩溃,看环境。

3、二者混合
其实就是移动并删除被删除的元素,有点拗口。就是将remove移动后的元素,不再使用的空间内的元素真正删除并和迭代器等自然挂钩。看下面的例子就会明白。

三、例程

例程是以std::vector做为例程的,其它的容器可能细节上会有一些差别,但总体上的应用是一致的。感兴趣可以把其它的几个容器都试一下。

#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
#include <vector>void testErase2() {std::vector<int> 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::vector<int> 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::vector<int> 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);//在Ubuntu22,Qt环境,不崩溃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::vector<int> 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.yayakq.cn/news/740128/

相关文章:

  • 手机网站引导页重庆百度竞价推广
  • 在线制作海报免费网店关键词怎么优化
  • 网页设计与网站建设过程中企动力做网站费用
  • 外贸在线网站建站企业网站如何做优化
  • 响应式网站是个坑wordpress 无法删除评论
  • 网站文章发布时间西宁软件网站建设
  • 做网站的公司天津国内vps
  • 黄页大全18勿看2000网站烟台百度网站建设推广
  • 英文网站建设比较好wordpress模板 知乎
  • 商城网站模板免费深圳建设注册中心网站
  • 网站开发 文献综述石家庄seo外包的公司
  • 建设银行网站怎么查工资明细wordpress模板创建
  • 上海最好网站建设公司淘宝销售书网站建设方案
  • 建设网站模板下载论坛网站需要多大的空间
  • 贵阳网站建设费用多少网帮你网站框架设计
  • 网站设计哪家口碑好青岛网站建设seo优化制作设计
  • 济南网站网站建设网站建设树状图
  • 设置 wap网站网站制作外包价格
  • 手机禁止网站跳转页面模板网站建设价格
  • 山东饰品行业网站制作网站开发用哪个软件方便
  • 中小企业网站的主流类型是wordpress注册跳过邮箱验证
  • 网站前端和后台wordpress插件代码
  • wordpress打开最快的网站北京汽车网站建设
  • 网站建设要注意哪些改成 响应式 网站
  • 模板网站的缺陷张家港做网站
  • 网站建设规划方案.pptasp.net网站建设论文
  • 建设网站的工作步骤是商务网站建设实训总结
  • 阜阳交通建设工程质监局网站网站建设流程教案
  • 广东一站式网站建设推荐浙江省建筑考证服务平台
  • 在电脑上建设个人网站光谷软件园 网站建设