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

兵团建设环保局网站阿里云做网站的代码

兵团建设环保局网站,阿里云做网站的代码,有没有做家居服设计师看的网站,哈尔滨建设工程招投标网文本旨在对 C 的容器 vector 进行肤浅的分析。 文章目录 Ⅰ、vector 的指定元素删除代码结果与分析 Ⅱ、vector 在新增元素后再删除指定元素代码结果与分析 Ⅲ、vector 在特定条件下新增元素代码结果与分析 参考文献 Ⅰ、vector 的指定元素删除 代码 #include iostream 的容器 vector 进行肤浅的分析。 文章目录 Ⅰ、vector 的指定元素删除代码结果与分析 Ⅱ、vector 在新增元素后再删除指定元素代码结果与分析 Ⅲ、vector 在特定条件下新增元素代码结果与分析 参考文献 Ⅰ、vector 的指定元素删除 代码 #include iostream #include vectorusing namespace std;int main() {std::vectorint v {8, 5, 6, 2, 4, 7};for (auto i v.begin(); i ! v.end();) {cout i.base() v.begin().base() endl;if (*i 2) {i v.erase(i);} else {i;}}cout size : v.size() endl;for (auto j v.begin(); j ! v.end(); j) {cout (*j) endl;} } 结果与分析 先说明一下 vector.erase() 就是动态数组的指定位置的删除其返回值为指向下一个元素( 或 end() ) 的迭代器。 而关于迭代器需要知道的点为 迭代器不是指针是类模板表现的 像 指针。他只是 模拟了指针的一些功能通过 重载了指针的一些操作符-,*, --等封装了指针是一个“可遍历STL Standard Template Library容器内全部或部分元素”的对象 本质是封装了原生指针是指针概念的一种提升lift提供了比指针更高级的行为相当于一种智能指针他可以根据不同类型的数据结构来实现不同的–等操作迭代器返回的是 对象引用而不是对象的值所以cout只能输出迭代器使用 *取值后的值而不能直接输出其自身。在设计模式中有一种模式叫 迭代器模式简单来说就是提供一种方法在不需要暴露某个容器的内部表现形式情况下使之能依次访问该容器中的各个元素这种设计思维在STL中得到了广泛的应用是STL的关键所在通过 迭代器容器和算法可以有机的粘合在一起只要对算法给予不同的迭代器就可以对不同容器进行相同的操作。 这也就是下面 vector v 的首地址为72b0每次进行 i 其基地址就加了 4 一个 int 的字节量。而在删除了 元素 2 之后迭代器的值仍然为 72bc但是在删除之后这个值志向了元素 4。完美的解释了代码。那么问题的出现请看第二节。 Ⅱ、vector 在新增元素后再删除指定元素 代码 #include iostream #include vectorusing namespace std;int main() {std::vectorint v {8, 5, 6, 2, 4, 7};for (auto i v.begin(); i ! v.end();) {// cout i.base() v.begin().base() endl;if (*i 8) {v.push_back(88);i v.erase(i);} else {i;}}cout size : v.size() endl;for (auto j v.begin(); j ! v.end(); j) {cout (*j) endl;}结果与分析 此时在添加了一个新的元素后再进行删除操作会发生段错误。而且为什么会有两个88。这就是我遇见的问题所在。虽然用 int vector 和 打印地址的方式可以很快地发现问题。但我面对的是 vectorexpr *呀。。。这么来看我好想确实有苦说不出阿。没办法是这样的唉。 而且一般来说也没人会打印迭代器的基地址。虽然打印了问题就能一目了然了但我是煞笔 此时为什么会有两个88而且元素 5 去哪了。这就是问题的所在了。但是答案其实就在 vector 的定义和名称中动态数组 。最后答案的揭晓在第三节。 Ⅲ、vector 在特定条件下新增元素 代码 #include iostream #include vectorusing namespace std;int main() {std::vectorint v {8, 5, 6, 2, 4, 7};for (auto i v.begin(); i ! v.end();) {cout i.base() v.begin().base() endl;if (*i 8) {v.push_back(88); i;} else {i;}}cout size : v.size() endl;for (auto j v.begin(); j ! v.end(); j) {cout (*j) endl;}结果与分析 最开始 v 的首地址为b2b0但是在添加了一个元素之后其首地址发送了改变aka 内存发现了一片新的区域来更合适的存储这个数组从而动态地发生了改变。但是此时我们设定的迭代器并未改变。可以看出在进行了 275 次自加操作后迭代器才完成了对于新数组的访问。 结尾处 的来两个88也很好解释了在最开始的 元素8 处向数组中添加了一个 88。从而导致了数组 v的内存地址发生了改变。在经历了漫长的自加操作后迭代器 i 又找到了一个元素 8就又添加了一个新的元素 88。 至此问题结束数组动态地删除指定元素的模板就是第一节的代码不要在删除的过程中添加新的元素反之亦然。希望可以帮到你wish u all the best. 参考文献 iterator迭代器和指针的区别stl_vector.h
http://www.hkea.cn/news/14464753/

相关文章:

  • 宁波建设工程报名网站建设好的网站
  • 做传销网站的程序员犯法吗wordpress 关键词描述
  • php网站整合discuz魔域网页游戏官网
  • 个人网站做什么类型好工装设计效果图网站
  • 江苏同邦建设有限公司网站wordpress网站地图自动更新
  • 重庆工业建设网站wordpress怎么换主题
  • 自建网站h5网站推广怎么发外链
  • 网站排名在线优化工具网站建设导航分哪几类
  • 外贸工厂网站做seo多吗塘下网站建设
  • 网站建设技术参数山西设计网站公司
  • 用ul做的网站为何浮动不上去综合类门户网站有哪些
  • 建设网站项目的目的公关服务
  • 重庆网站托管服务wordpress怎么改标题和meta
  • 织梦汽车网站模板免费下载驻马店住房和城乡建设厅网站
  • 自助网站设计平台青岛 网站开发
  • 大连意动网站建设有限公司怎么样什么叫做优化
  • 免费金融网站模板软件开发需要哪些人员及其分工
  • 怎么免费开网站云服务器做网站详细
  • 一个网站需要服务器吗720云 wordpress
  • 刘涛做代言的那个网站wordpress怎么输代码
  • 包装材料东莞网站建设学wordpress要多久
  • 建立网站的流程用python做网站的多吗
  • 河南seo网站策划做零食网站的首页模板
  • 网站知名度海口今天的消息
  • 上海网站制作电话外贸型企业网站建设
  • 省网站建设墨尔本网站建设
  • google 网站打不开Wordpress深入
  • 做的比较好的公司网站网页设计培训传智教育
  • o2o网站有哪些旅游网站建设方案书范文
  • 医药销售网站开发背景wordpress 更改 虚拟目录