vector基础

  1 //STL基础
  2 //容器
  3 //vector
  4
  5 #include "iostream"
  6 #include "cstdio"
  7 #include "vector"//向量
  8 #include "iterator"//迭代器
  9 #include "numeric"//accunulate()求和算法需要
 10 #include "algorithm"//reverse()
 11 using namespace std;
 12
 13 bool cmp(const int a,const int b)
 14 {
 15     return a>b;//或a-b
 16 }
 17
 18 int main()
 19 {
 20     //创建vector对象
 21     vector<int> v1;//为空
 22     vector<int>v2(10);//初始长度为10,默认为10个0
 23     vector<double>v3(10,8.6);//初始化前10个数为8.6
 24     vector<double>v4(v3);//v4是v3的一个副本
 25
 26     //尾部添加元素
 27     v3.push_back(8.6);
 28
 29
 30     //获取向量长度的方法
 31     int size03=v3.size();
 32     cout<<size03<<endl;
 33
 34
 35     //下标访问法
 36     for(int i=0;i<size03;i++){
 37         cout<<v3[i]<<" ";
 38     }
 39     cout<<endl;
 40     //迭代器访问法
 41     vector<double>::iterator it;//定义一迭代器
 42     for(it=v3.begin();it!=v3.end();it++){//v3.begin()为v3这个向量第一个元素的地址,
 43                                         // v3.end()为最后一个元素的后一个地址
 44         cout<<(*it)<<" ";               //注意.begin()为向量获取首元素地址的方法,括号不可忘
 45     }
 46     cout<<endl;
 47
 48
 49     //求和算法,accumulate() 头文件 #include "algorithm"返回值为整型,前两个参数为指针(前闭后开区间),
 50     //第三个参数a,为在区间元素和的基础上+a,不可省
 51     int sum02=accumulate(v2.begin(),v2.end(),42);
 52     cout<<sum02<<endl;
 53
 54
 55     //vector元素的插入
 56     v3.insert(v3.begin(),8);//在第0个元素前插入8,8成为第0个元素
 57     v3.insert(v3.begin()+2,1);//在第2个元素前插入1,1成为第2个元素
 58     v3.insert(v3.end(),8);//在向量末尾追加8
 59     v3.insert(v3.end()-1,99);//在第1个元素前插入99,99成为第2个元素
 60    //注意这种会出错,内存越界 v3.insert(v3.end()+1,99);
 61
 62
 63     //vector元素的删除
 64     v3.erase(v3.begin()+2);//s删除下表为2  即第三个元素
 65     v3.erase(v3.begin()+3,v3.begin()+5);//删除一段  删除2个(下标为3和4),(参数前闭后开)
 66
 67     v3.clear();//清空向量,长度为0
 68
 69
 70     //vector元素反向排序
 71     //reverse()反向排列算法 头文件#include "algorithm"
 72     //可使向量中某段迭代器区间反向排列
 73     vector<int>v;
 74     reverse(v.begin(),v.end());
 75
 76
 77     //sort()算法,对vector内元素排序  #include "algorithm"
 78     sort(v.begin(),v.end());//默认升序
 79
 80     //若要降序
 81     //法一
 82     /*bool cmp(const int a,const int b)
 83     {
 84         return a>b;//或a-b
 85     }*/
 86     sort(v.begin(),v.end(),cmp);
 87     //法二
 88     sort(v.rbegin(),v.rend());
 89     //法三
 90     sort(v.begin(),v.end(),greater<int>());
 91
 92
 93     //vector 去重   只去相邻的重的,所以常先排序在操作
 94     //unique()   #include "iostream"
 95     int size=unique(v.begin(),v.end())-v.begin();//因为并不把重复的元素真正删除,
 96                                                 //而是放于后面,返回去重后最后一个元素首地址
 97
 98
 99     //vector判断是否为空
100     v.empty();
101
102
103 }

时间: 2024-09-29 00:02:32

vector基础的相关文章

vector基础知识点整理(含盲点 以解决)

#include<iostream> using namespace std; #include"vector" //输出(放在main函数里面出错 为什么????????) //因为函数里面不能定义函数!!! void printV(vector<int> &obj) { for (int i = 0; i < obj.size(); i++) { cout << obj[i] << " "; } co

vector 基础2

size  :返回有效元素个数 max_size  :返回 vector 支持的最大元素个数 resize  :改变有效元素的个数 capacity  :返回当前可使用的最大元素内存块数(即存储容量) empty  :判断是否为空 reserve  :请求改变存储容量 shrik_to_fit  :请求移除未使用的存储空间 std::vector<int> foo; for (int i = 0; i<100; i++) foo.push_back(i); std::cout <&

vector 基础

http://classfoo.com/ccby/article/jnevK Vector的存储空间是连续的,list不是连续存储的 vector初始化 vector<int>v; //不能使用下标索引赋值,因为还没有空间 vector<int>v1(10, -1);//初始化10个,初值为-1 int a[4] = { 1, 2, 3, 4 }; vector<int>v2(a, a + 4); 如果先定义,后赋值,使用assign vector<int>

STL— vector(基础)

基本摘抄自百度百科 1,使用条件 头文件   <vector>     和   using namespace std;  (因为他是属于 C++ 的) 2,  定义:简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据.(度娘) 3,使用 : vector <int> c;     // 长度未知,未初始化 vector <int> c(10);     // 长度为 10 ,未初始化 vector <int> c(10,1); //

Android Vector曲折的兼容之路

Android Vector曲折的兼容之路 两年前写书的时候,就在研究Android L提出的Vector,可研究下来发现,完全不具备兼容性,相信这也是它没有被广泛使用的一个原因,经过Google的不懈努力,现在Vector终于迎来了它的春天. 在文章后面,会给出本文的Demo和效果图,并开源在Github Vector Drawable Android 5.0发布的时候,Google提供了Vector的支持.Vector Drawable相对于普通的Drawable来说,有以下几个好处: Ve

C++【vector】用法和例子

1 /*** 2 * vector 基础api复习 3 * 8 AUG 2018 4 */ 5 6 #include <iostream> 7 #include <vector> 8 using namespace std; 9 10 // 打印vec向量 11 void print(vector<int> vec, int index) 12 { 13 std::cout << "vec" << index <<

【转载】设计模式大集合

原文: 设计模式大集合 最近要做架构了,得把设计模式整理一遍.因为这玩意,设计时能用就用,所以得明白啥时候用.不过要是成本太高了,或者根本低耦合没意义,就没必要用.这里列出使用场合(仅限于设计阶段),而且这文章不是给没学过的人看的,复习用的. 另外,并行设计模式不在本文范围内. Creational Pattern:(创建类,描述怎样低耦合的创建对象) Abstract Factory: 抽象工厂.当程序中对象分为并行的不同族(例如gnome和KDE),创建特定族的对象用此模式(例如创建一个窗口

java web 开发三剑客 -------电子书

Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知Internet的目的是让各个net交互.所以,Internet实质上是将世界上各个国家.各个网络运营商的多个网络相互连接构成的一个全球范围内的统一网,使各个网络之间能够相互到达.各个国家和运营商构建网络采用的底层技术和实现可能各不相同,但只要采用统一的上层协议(TCP/IP)就可以通过Internet

小猪猪逆袭成博士之C++基础篇(四)数组、指针、vector、迭代器

小猪猪逆袭成博士之C++基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始有10个连续的int大小的空间.我们还是从初始化说起. 我们以数据类型int为例,当然也可由有很多的数据类型,可以是像int,double这种,也可以是自定义的类,一般的初始化方法有: int a[10]; int a[10]={0}; int a[3]={0,1,2}; 在前面的文章中,有