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

兴义网站建设公司无锡网站推广电话

兴义网站建设公司,无锡网站推广电话,大学生简历免费制作网站,广州企业建站目录 vector vector常用接口 构造函数 operator[]size() 迭代器 范围for capacity() resize() reverse() push_back和pop_back insert erase() algorithm::sort 注意 迭代器失效 vector vector单词直译是向量的意思#xff0c;这个容器可以容纳不同的类型数据size() 迭代器 范围for capacity() resize() reverse() push_back和pop_back insert erase() algorithm::sort 注意 迭代器失效 vector vector单词直译是向量的意思这个容器可以容纳不同的类型数据并且是一个连续的可自动增长的顺序表。 // 它有两个模板参数第一个就是vector要存放的类型需要显示实例化 // 第二个叫做空间配置器如果不写默认就是库中的 template class T, class Alloc allocatorT class vector; vector常用接口 构造函数 #include vector // 需要包含头文件vectorint first; // 一个空vector可以存放int vectorint second (4,100); // 插入4个值为100的数据 vectorint third (second.begin(),second.end()); // 根据迭代器区间去构造 vectorint fourth (third); // 拷贝构造 operator[]size() reference operator[] (size_type n); // 返回值reference是返回的引用 const_reference operator[] (size_type n) const; // 返回const引用size_type size() const; // 返回vector中的个数vectorint v1(4, 100); for (int i 0; i v1.size(); i) // 对每个值操作都是可以的 {cout v1[i] ;v1[i]; } 迭代器 vectorint::it it.begin(); // 返回vector初始位置的指针 while (it ! v1.end()) // it不等于vector最后一个位置的下一个指针 {(*it); // 这里有优先级的问题一定要先解引用才可以拿到数据否则迭代器就会先移动cout *it ;it; }// 还有其他迭代器使用方法是一样的 范围for vectorint v1(4, 100); for (auto e : v1) // 底层也是使用了迭代器 {cout e ; } capacity() size_type capacity() const; // 返回容器开辟的空间 resize() void resize (size_type n, value_type val value_type()); // 这个value_type就是显示实例化的那个模板参数 vectorint v1(4, 100); // resize有几种情况 v1.resize(2); // 第一种n v1.size()v1.size()会变成n原来大于n的位置的数据会直接移除 v1.resize(5, 1); // 第二种n v1.size()v1.size()会变成n并且没有初始化过的数据初始化为val v1.resize(10); // 第三种n v1.size()没有给val的值v1.size()会变成n没有初始化过的值赋值为0 // 以上三种如果vector空间不够会自动开辟空间空间很大size变得很小也会释放空间 reverse() void reserve (size_type n); // 重新申请大小为n的空间 // 如果n小于现在的capacity不操作如果n大于capacity就重新申请大小为n的空间 push_back和pop_back void push_back(const value_type val); // 尾插 void pop_back(); // 尾删 // 不做过多介绍了 insert void insert(iterator pos, size_type n, const value_type val); // 传入一个迭代器把val的值插入pos的位置 void insert (iterator pos, InputIterator first, InputIterator last); // 在pos位置插入一段迭代器区间 // string中还有find这样的函数还能找到下标但是vector中并没有这个接口 // 所以在algorithm这个库中就有这个函数 template class InputIterator, class T InputIterator find (InputIterator first, InputIterator last, const T val); // 在一段迭代器区间找到valvectorint v(4, 1); vectorint::iterator pos find(v.begin, v.end(), 1);  erase() iterator erase (iterator pos); // 删除pos位置 iterator erase (iterator first, iterator last); // 删除一段区间vectorint v(4, 1); vectorint::iterator:: pos find(v.begin(), v.end(), 1); if (pos ! v.end()) // 这里最好还是判断一下如果没找到就不删不会报错 {erase(pos); }  algorithm::sort template class RandomAccessIterator void sort (RandomAccessIterator first, RandomAccessIterator last); // 这个函数虽然不是vector库中的但还排序还是很好用的它的底层是使用的快排 // 这个函数默认排的是升序 vectorint v; v.push_back(2); v.push_back(1); v.push_back(7); v.push_back(4); sort(v.begin(). v.end());// 要是想要排降序呢 template class RandomAccessIterator, class Compare void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp); // 前两个还是迭代器区间最后一个参数决定是升序还是降序 // 在库中有一个类模板lessT把这个传入就是升序也不需要传 // 升序要再包含一个头文件functional这样就可以使用greaterT这个类模板了 sort(v.begin(), v.end(), greaterint()); // 传入的是一个对象所以使用匿名对象 注意 // vector不仅可以存放int它甚至可以存放string vectorstring strV; string str(abc); strV.push_back(str); strV.push_back(string(abc)); strV.push_back(abc);// 遍历 for (auto str : strV) // 这里注意的是使用引用传参如果不加引用就是深拷贝深拷贝的代价很大 {} 迭代器失效 迭代器也用过了但是使用的过程中还会出现一些奇怪的问题。 vectorint v; v.push_back(1); v.push_back(2); v.push_back(3); vectorint::iterator pos find(v.begin(), v.end(), 3); if (pos ! v.end()) {v.insert(pos, 10);v.insert(pos, 20); } vectorint v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); auto it v.begin(); while (it ! v.end()) {if (*it % 2 0)erase(it);it; } // 库中有这两个函数的声明这里的返回值是操作后的下一个数使用的时候一定要接受返回值 iterator insert (iterator position, const value_type val); iterator erase (iterator position);if (pos ! v.end()) {pos v.insert(pos, 10);// 插入10下一个位置就是3扩容完之后pos的位置也是正确的pos v.insert(pos, 20); // 再插入20就不会出错 }while (it ! v.end()) {if (*it % 2 0)it erase(it); // 这里不赋值也可以如果删除了it不动就是下一个的位置elseit; // 不删除再 }         当然不止这两种实例可以证明迭代器失效但是出的都是这一类问题所以使用这两个函数的时候一定要更新pos的位置直接访问会出问题这就是迭代器失效。迭代器失效的情况在不同平台下的效果是不一样的。
http://www.dnsts.com.cn/news/201012.html

相关文章:

  • 微网站建站平台天津市建设信息网官网
  • 闵行网站制作公司ppt模板免费下载第一ppt
  • 手机网站的优势个人网站空间
  • 抚州市建设局网站查询免费下载百度
  • 鹤山市网站建设公司免费建站平台官网
  • 旅游网站内容规划特点资金盘网站怎么建设
  • 做外贸 网站深圳一元购网站建设
  • 住房和城乡建设部网站干部学院北京网站设计学习
  • 做私活的网站承德网站建设电话
  • 建筑招工人在哪个网站比较好找建设旅游网站的意义
  • 郧阳网站建设网站域名备案主机名
  • 济南品质网站建设哪家好伪静态 wordpress
  • 网站建设目录广州网站设计公司vi设计公司
  • 网站建设提供的网站资料html5网站制作实战
  • 浙江省建设工程监理协会网站做销售的网站
  • 表格网站怎么做的上海网站seo策划
  • php网站发送邮件wordpress邮箱汉化插件
  • 阿里云云主机做网站wordpress 3d云标签
  • 网站开发应如何入账合肥做网页的网络公司
  • 装修网站线怎样做开通网站需要什么手续
  • 自己建的网站地址多合一网站建设
  • 做网站难度女生学建筑专业好吗
  • 婚恋网站系统宝塔wordpress公网访问
  • 电脑版网站建设合同情侣建站的wordpress主题
  • 深圳建站公司品牌网站建设wordpress页面内容调用
  • dreamwearver做网站地图wordpress非插件使用七牛云存储
  • 中国城乡住房和建设部网站互联网怎么推广产品
  • 网站建设丨找王科杰专业手机网站页面
  • access如何与网站连接数据库.htaccess 伪静态 wordpress
  • 台州平台网站建设网络营销人员招聘