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

免费的html网站住总第三开发建设有限公司网站

免费的html网站,住总第三开发建设有限公司网站,游戏网站搭建需要多少钱,开发次元世界文本旨在对 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.w-s-a.com/news/929682/

相关文章:

  • 保定网站制作专业网页设计模板html代码运行
  • 中国专利申请网官网杭州seo优化
  • 杭州低价做网站网站系统功能流程图
  • 档案室建设网站名贵中药材初加工平台
  • 怎么做优惠券的网站wordpress加载速度
  • 手机网站 分辨率如何创建网站挣钱
  • 网站建设工作标准做模版网站
  • 免费注册微信网站怎样做天猫网站视频
  • 青海建设厅网站通知wordpress如何改文章id
  • 国外搜索网站建设支付网站备案
  • 合肥建站公司有哪家招聘的拼车平台网站开发
  • 网站 备案 固话北京建站模板企业
  • 网站开发的公司wordpress分类目录 模版
  • flashfxp怎么上传对应网站空间wordpress无法创建
  • 建设网站案例分析做网站代理怎么赚钱
  • 唯品会网站建设特色域名备案期间 网站访问
  • 郑东新区建设局网站怎么做万网网站
  • 阿里云上传的网站 服务器路径试用网站开发
  • 做美食原创视频网站网站开发要多钱
  • 怎么做网站作业哪个网站可兼职做logo
  • asp网站搭建教程做网站备案完成之后需要干什么
  • 无锡外贸网站开发兰州网站在哪备案
  • 广州百度网站建设公司天津建设电工证查询网站
  • 网站建设与管理行业发展情况制作网页动态效果
  • wordpress 特色缩略图临沂seo全网营销
  • 隆昌市住房和城乡建设厅网站做网站用什么字体比较好
  • 惠州网站建设设计18款未成年禁用软件ap入口
  • 班级网站 建设目标如何做好网站建设内容的策划书
  • 网站建设与网页设计期末考试清博舆情系统
  • plone网站开发商城网站建设怎么收费