/*vector 单端数组功能:动态扩展支持随机访问的迭代器
*/
#include<iostream>
#include<vector>
using namespace std;void printVector(vector<int>&v)
{for(vector<int>::iterator it = v.begin();it!=v.end();it++){cout << *it << " ";}cout << endl;
}/*vector 构造*/
void test_13()
{vector<int>v1;//默认构造 无参构造for (int i = 0;i < 10;i++){v1.push_back(i);}printVector(v1);// 通过区间的方式进行构造vector<int>v2(v1.begin(),v1.end());printVector(v2);//n个elem方式构造vector<int>v3(10,100);printVector(v3);//拷贝构造vector<int>v4(v3);printVector(v4);
}/*vector 赋值  = ssign()*/
void test_14()
{vector<int>v1;//默认构造 无参构造for (int i = 0;i < 10;i++){v1.push_back(i);}printVector(v1);//赋值vector<int>v2;v2 = v1;printVector(v2);vector<int>v3;v3.assign(v1.begin(),v1.end());printVector(v3);vector<int>v4;v4.assign(10,100);printVector(v4);
}/*vector 容量 大小 empy()  capacity() size() resize(int num,em)*/
void test_15()
{vector<int>v1;//默认构造 无参构造for (int i = 0;i < 10;i++){v1.push_back(i);}printVector(v1);if (v1.empty()){cout <<"empty"<<endl;}else{cout << "not empty "<<"capacity :" << v1.capacity() <<endl;cout << "size :" << v1.size() << endl;}//重新指定大小v1.resize(15,100);//默认填充0,指定100printVector(v1);v1.resize(5,100);//短了会删除printVector(v1);}/*vector 插入、删除-push_back 尾插元素-pop_back-insert-erase-clear*/
void test_16()
{vector<int> v1;v1.push_back(10);v1.push_back(20);v1.push_back(30);v1.push_back(40);v1.push_back(50);v1.push_back(60);//遍历printVector(v1);//尾删v1.pop_back();printVector(v1);//插入v1.insert(v1.begin(),100); //(位置,内容)printVector(v1);v1.insert(v1.begin(),2,1000);//(位置,个数,内容)printVector(v1);//删除v1.erase(v1.begin()); //(位置)printVector(v1);v1.erase(++v1.begin(),v1.end()); //(起始位置,结束位置)printVector(v1);v1.clear();printVector(v1);
}/*vector 容器 数据存取*/
void test_17()
{vector<int>v1;//默认构造 无参构造for (int i = 0;i < 10;i++){v1.push_back(i);}printVector(v1);//利用[]for(int i = 0;i<v1.size() ; i++){cout << v1[i] <<" ";}cout <<endl;//利用atfor(int i = 0;i<v1.size() ; i++){cout << v1.at(i) <<" ";}cout <<endl;//获取第一个元素,最后一个元素cout << "first : "<<v1.front() <<"  end : "<< v1.back() << endl;}/*vector 互换容器*/
void test_18()
{vector<int>v1;//默认构造 无参构造for (int i = 0;i < 10;i++){v1.push_back(i);}printVector(v1);vector<int>v2;//默认构造 无参构造for (int i = 10;i > 0;i--){v2.push_back(i);}printVector(v2);v1.swap(v2);printVector(v1);printVector(v2);vector<int>v;//默认构造 无参构造for (int i = 0;i < 100000;i++){v.push_back(i);}cout << "capacity: " << v.capacity() << endl;cout << "size: " << v.size() << endl;v.resize(3);cout << "capacity: " << v.capacity() << endl;cout << "size: " << v.size() << endl;vector<int>(v).swap(v);//匿名对象 拷贝构造,收缩内存cout << "capacity: " << v.capacity() << endl;cout << "size: " << v.size() << endl;}/*vector 预留空间减少动态扩展空间次数*/
void test_19()
{vector<int>v;//默认构造 无参构造//统计开辟次数int num = 0;int * p = NULL;for (int i = 0;i < 100000;i++){v.push_back(i);if(p!=&v[0]){p = &v[0];num++;}}cout << "动态拓展次数 = " <<num<< endl;vector<int>v2;//默认构造 无参构造v2.reserve(100000);//预留空间//统计开辟次数int num2 = 0;int * p2 = NULL;for (int i = 0;i < 100000;i++){v2.push_back(i);if(p2!=&v2[0]){p2 = &v2[0];num2++;}}cout << "预留空间后,动态拓展次数 = " <<num2 <<endl;
}int main()
{test_13();test_14();test_15();test_16();test_17();test_18();test_19();
}

29-【什么叫规矩 什么叫体统】vector容器相关推荐

  1. vector容器的end是指向最后一个元素的下一个位置,使用时要将迭代器减1,才能获取到最后一个

    vector容器的end是指向最后一个元素的下一个位置,使用时要将迭代器减1,才能获取到最后一个 原因: Cont是容器的类型,容器中定义了一个此容器所用的游标(迭代器)的类型,叫iterator,于 ...

  2. STL之序列式容器(三)、vector容器

    一.vector的使用.创建及初始化 vector<T> 容器是包含 T 类型元素的序列容器,和 array<T,N> 容器相似,不同的是 vector<T> 容器 ...

  3. C++:vector容器中使用pair该如何访问成员

    (显然,vector 的索引从 0 开始,这和普通数组一样.通过使用索引,总是可以访问到 vector 容器中现有的元素.) 如果是简单的访问vector里边的成员的话,是这样的: #include ...

  4. vector容器中erase(删除)的使用

    erase函数可以用于删除vector容器中的一个或者一段元素,在删除一个元素的时候,其参数为指向相应元素的迭代器,而在删除一段元素的时候,参数为指向一段元素的开头的迭代器以及指向结尾元素的下一个元素 ...

  5. vector容器 begin()与end()函数、front()与back()的用法

    begin函数: 函数原型: iterator begin(); const_iterator begin(); 功能: 返回一个当前vector容器中起始元素的迭代器. end函数: 函数原型: i ...

  6. vector容器中数据的排序方法

    前言 在项目中经常会遇到对vector容器中数据排序的情况,有时候vector中数据还常常是pair关联容器.此处给出一个使用demo,使用了C++中的lambda表达式. #include" ...

  7. vector 容器 动态数组总结

    vector 容器 动态数组总结 二话不说直接上代码 #include <vector> #include <algorithm> #include <iostream& ...

  8. vector容器的用法

    转自一篇博客^-^: 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.p ...

  9. vector容器与iterator迭代器

    vector容器 vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库负责管理存储元素的相关内存.我们把vector称为容器,是因为它可以包含其他对象 ...

最新文章

  1. 如何快速实现HTML编辑器.NET组件
  2. 下面哪一c++ 语言表达式不能正确表示数学关系ax≤b,C++经典选择题(一)
  3. kohana分析之主程序加载流程
  4. Entity Framework
  5. Nginx+Keeplived双机热备(主从模式)
  6. 华为手机记事本导出_涨知识!原来华为手机自带的录音转文字这么好用,秒变会议神器...
  7. 【逻辑与计算理论】Lambda 演算——开篇
  8. javascript中 __proto__与prorotype的理解
  9. vSphere 6.7的新增功能?我应该升级吗?
  10. python中用于输出内容到终端的函数是_python执行linux shell管道输出内容
  11. android ListView中CheckBox错位的解决
  12. python是什么 自学-自学Python会有什么困难?老男孩自学python编程
  13. 安卓TextView完美展示html格式代码
  14. 通过YYtext实现文本点击(类似微博效果)
  15. 一次人大金仓剔除锁经历
  16. centos7克隆机修改ip地址,并与另一台虚拟机ping起来
  17. 客制化PO单据模板(实例)
  18. 华丽的设计,20个免费的图标字体
  19. ipad怎么和mac分屏_将Mac屏幕扩展到iPad有多好用?我甚至有了入手iPad Pro的冲动...
  20. mysql小知识:根据指定日期,获取是当年第几周

热门文章

  1. 口语8000句--(1)在家中
  2. 【转】追问《我的团长我的团》
  3. python制作七夕礼物_opencv+python制作硬核七夕礼物
  4. 除了自己选择的几家定点医疗机构,还有哪些医院无须选择为定点也可以报销?...
  5. 计算机amibios设置教程,AMI BIOS,详细教您刷新ami bios
  6. 网页是由html和什么组成,【填空题】网站中,各个网页是由________联系起来的。...
  7. JAVA项目文件下载、浏览接口
  8. 【网络教程】如何关闭微信“个性化推荐广告”
  9. C语言.内存管理malloc realloc calloc free memset bzero
  10. 未来几年(定制客运)城际拼车业务会严重影响传统客运