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

网站建设费钱吗wordpress怎么增加按钮

网站建设费钱吗,wordpress怎么增加按钮,前端做项目的网站,湛江app开发公司文章目录 模拟实现vector基本成员变量vector的构造与析构vector迭代器vector容量vector元素访问vector修改操作 vector迭代器失效问题什么是迭代器失效1.插入元素导致迭代器失效2.删除元素导致迭代器失效3.重新分配空间导致迭代器失效 如何解决迭代器失效问题 模拟实现 vector… 文章目录 模拟实现vector基本成员变量vector的构造与析构vector迭代器vector容量vector元素访问vector修改操作 vector迭代器失效问题什么是迭代器失效1.插入元素导致迭代器失效2.删除元素导致迭代器失效3.重新分配空间导致迭代器失效 如何解决迭代器失效问题 模拟实现 vector基本成员变量 namespace sg {templateclass Tclass vector{ public:typedef T* iterator;typedef const T* const_iterator; private:iterator _start nullptr;iterator _finish nullptr;iterator _end_of_storage nullptr;} };这里我把成员改成与迭代器相关更方便我们接下来的使用 vector的构造与析构 //构造函数 vector(const vectorT v) {reserve(v.size()); // 开辟一个空间for (auto e : v){push_back(e);} } //析构函数 ~vector() {if (_start) // 如果_start不为空就析构{delete[] _start;_start _finish _end_of_storage nullptr;} }vector迭代器 iterator begin() {return _start; } iterator end() {return _finish; } const_iterator begin() const {return _start; } const_iterator end() const {return _finish; }vector容量 bool empty() {return _start _finish; } void reserve(size_t n) {size_t old_size size();T* tmp new T[n];memcpy(tmp, _start, size() * sizeof(T));delete[] _start;_start tmp;_finish tmp old_size;_end_of_storage _start n; } size_t size() {return _finish - _start; }size_t capacity() {return _end_of_storage - _start; }void resize(size_t n, T val T()) {if (n size()){_finish _start n;}else{reserve(n);while (_finish _start n){*_finish val;_finish;}} }vector元素访问 T operator[](size_t i) {assert(i size());return _start[i]; }vector修改操作 void push_back(const T x) {if (_finish _end_of_storage){reserve(capacity() 0 ? 4 : capacity() * 2);}*_finish x;_finish; } void pop_back() {assert(!empty());--_finish; } iterator insert(iterator pos, const T x) {assert(pos _start);assert(pos _finish);//扩容if (_finish _end_of_storage){size_t len pos - _start;reserve(capacity() 0 ? 4 : capacity() * 2);pos _start len;}iterator end _finish - 1;while (end pos){*(end 1) *end;--end;}*pos x;_finish;return pos; } void erase(iterator pos) {assert(pos _start);assert(pos _finish);iterator it pos 1;while (it ! end()){*(it - 1) *it;it;}--_finish; }vector迭代器失效问题 迭代器失效的本质是因为vector的内存管理机制和对动态数组的封装方式。vector的某些操作会导致其底层数组的重新分配所以原有的迭代器会失效。 什么是迭代器失效 迭代器失效的常见情况 插入元素在vector末尾插入元素除了指向最后一个元素的迭代器以外其他迭代器依旧有效 如果在其他位置插入则指向该插入位置的迭代器和其之后的所有迭代器失效删除元素删除元素后被删除和删除之后的所有迭代器都会失效重新分配当vector的大小超过当前容量时它可能分配需要更大的空间进行存储元素这种重新分配会导致所有迭代器、指针、引用失效 注意vector的迭代器失效也和编译器环境有关有关指报错和运行。在Linux下g对于迭代器失效的检查就没这么严格一般迭代器失效也还能运行不过运行结果会出错。 1.插入元素导致迭代器失效 int main() {vectorint v1{ 1,2,3,4,5 };auto it v1.begin();v1.insert(v1.begin(), 99); // 在第一个位置插入元素while (it ! v1.end()){cout *it ;it;}cout endl;return 0; }插入和删除同理这里我已删除为例 2.删除元素导致迭代器失效 int main() {vectorint v1{ 1,2,3,4,5 };auto it v1.begin();v1.erase(v1.begin()); // 删除第一个元素while (it ! v1.end()){cout *it ;it;}cout endl;return 0; }3.重新分配空间导致迭代器失效 int main() {vectorint v1{ 1,2,3,4,5 };auto it v1.begin();v1.resize(20, 10); // 容量不够重新分配空间又叫异地扩容while (it ! v1.end()){cout *it ;it;}cout endl;return 0; }如何解决迭代器失效问题 string迭代器失效原因和vector异地扩容类似需要注意。 解决办法在使用前重新赋值 int main() {vectorint v1{ 1,2,3,4,5 };auto it v1.begin();v1.resize(20, 10); // 容量不够重新分配空间又叫异地扩容it v1.begin(); // 使用前重新赋值while (it ! v1.end()){cout *it ;it;}cout endl;return 0; }
http://www.dnsts.com.cn/news/34858.html

相关文章:

  • 免费画图网站平阴网站建设费用
  • 哈尔滨网站建设制作费用网页设计和网站制作
  • iis7发布网站教程做专题页的背景网站
  • 什么语言做网站快简诉网站建设的基本流程
  • 衡水高端网站建设动漫设计和动漫制作技术的区别
  • 如何提高网站收录量南昌公路建设有限公司网站
  • 长治一般建一个网站需要多少钱沈阳网站建设思路
  • 网站建设数据录入沈阳网站建站推广
  • 酒水食品做的好网站网站内容建设的原则是什么
  • 电子商务网站开发基础事件营销怎么做
  • 网站建设一年多少网站宽度设置
  • 傻瓜式网页制作网站做直播网站有哪些
  • 长治个人做网站开福区城乡建设局网站
  • 镇江手机网站制作上海网站建设企业
  • 贵阳网站建设王道下拉惠个人主页是指什么
  • 小型网站项目策划书广州网站建设高端
  • 余姚网站如何进行优化网站建设与维护理解
  • 外贸网站有必要吗网站建设服务兴田德润
  • 眉山住房和城乡建设局网站网络品牌营销策略
  • 广东省建设工程金匠奖公布网站中山百度关键词搜索
  • 自己电脑做的网站如何映射到公网济宁君天建设公司网站
  • python 网站开发怎么部署哈尔滨互联网公司
  • php网站怎么做302做虚假彩票网站判几年
  • 网站源码免费分享莱芜市
  • 网站的模板演示怎么做织梦cms下载
  • 网站规划主要内容深圳物流公司网站
  • 企业搭建网站多少钱医疗保健 网站 备案
  • 企业网站优化服务商网站地图可以自己做么
  • 网站成功案例阿里云域名购买官网
  • 一分钟做网站小网站模板下载 迅雷下载 迅雷下载不了