vector数组的相关知识
Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:
- Vector 是同步访问的。
- Vector 包含了许多传统的方法,这些方法不属于集合框架。
Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况(意思就是动态数组、数组长度不是固定的)
对应的各种方法如下:
一般进行初始化的步骤是这个样子的:
- vector<int> vec; //声明一个int型向量
- vector<int> vec1(,); //vec1的内容为1,1,1,1
- vector<int> vec1{ , , , , , }; //vec1内容1,2,3,4,5,6
- vector<int> vec(tmp); //声明并用tmp向量初始化vec向量(也可以用vec=t,p)
- .vec.push_back(同类型量);作用是在vector的末尾插入新元素;
- .insert()第一个参数为迭代器,作用为在迭代器前面插入新元素;
- .assign(,)向vector中加入5个1,同时清除掉以前的元素。
- std::vector<int> vec1;
- vec1.push_back();
- vec1.push_back();
- //vec1元素:1,2
- std::vector<int> vec2(vec1); //将vec1赋值给vec2
- std::vector<int>::iterator it;
- it=vec2.begain();
- vec2.insert(it,); //在第一个元素前添加5
- it=vec2.begain(); //每当新插入一个元素时内存重新分配所以要重新为迭代器分配指针
- vec2.insert(it,,);
- std::vector<int> vec3(vec2);
- vec3.assign(,); //清楚所有元素只留两个5
数组的删除操作是:
- .pop_back()删除最后一个元素。
- .erase()删除指定位置元素。(其中的参数要是指针变量,比如begain(),end(),以及迭代器值),例如vec.erase(vec.begin()+);删除第3个元素
- .clear()清除所有元素。
- .empty()判断该数组是否为空
对于数组的遍历的情况:
- .front()访问第一个元素(第一个元素的值而不是地址!begin()相反)
- .back()访问最后一个元素(最后一个元素的值而不是地址!end()相反)
- .size()数组的元素个数
- vector<int> a;
- //像数组一样以下标访问
- for(int i = ; i < a.size(); i++)
- {
- cout << a[i];
- }
- //以迭代器访问
- vector<int>::iterator it;
- for(it=a.begin(); it!=a.end(); it++)
- {
- cout<<*it<<" " ;
- }
对于翻转和排序的遍历就是:
- #include <algorithm>
- reverse(vec.begin(), vec.end())//将元素翻转,即逆序排列!
- #include <algorithm>
- sort(vec.begin(), vec.end()); //采用的是从小到大的排序
- //如果想从大到小排序,可以采用上面反转函数,也可以采用下面方法:
- bool Comp(const int& a, const int& b) {
- return a > b;
- }
- sort(vec.begin(), vec.end(), Comp);
对于vector创建二维数组的具体的操作:
- 用vector数组创建二维数组:
- //C++ 构建二维动态数组
- int **p;
- p = new int*[]; //注意,int*[10]表示一个有10个元素的指针数组
- for (int i = ; i < ; ++i)
- {
- p[i] = new int[];
- }
- //用vector构建二维数组
- vector<vector<int>> matrix;
- vector<int>a;
- a.push_back();
- a.push_back();
- a.push_back();
- matrix.push_back(a);
- //或者用下面的方法
- int i,j;
- vector<vector<int>> array();
- for (i = ; i < array.size(); i++)
- array[i].resize();//这里一定要使用resize其相当于每行的元素数并已经初始化过了
对应详细的vector的相关用法如下:
- 序号 方法描述
- void add(int index, Object element)
- 在此向量的指定位置插入指定的元素。
- boolean add(Object o)
- 将指定元素添加到此向量的末尾。
- boolean addAll(Collection c)
- 将指定 Collection 中的所有元素添加到此向量的末尾,按照指定 collection 的迭代器所返回的顺序添加这些元素。
- boolean addAll(int index, Collection c)
- 在指定位置将指定 Collection 中的所有元素插入到此向量中。
- void addElement(Object obj)
- 将指定的组件添加到此向量的末尾,将其大小增加 。
- int capacity()
- 返回此向量的当前容量。
- void clear()
- 从此向量中移除所有元素。
- Object clone()
- 返回向量的一个副本。
- boolean contains(Object elem)
- 如果此向量包含指定的元素,则返回 true。
- boolean containsAll(Collection c)
- 如果此向量包含指定 Collection 中的所有元素,则返回 true。
- void copyInto(Object[] anArray)
- 将此向量的组件复制到指定的数组中。
- Object elementAt(int index)
- 返回指定索引处的组件。
- Enumeration elements()
- 返回此向量的组件的枚举。
- void ensureCapacity(int minCapacity)
- 增加此向量的容量(如有必要),以确保其至少能够保存最小容量参数指定的组件数。
- boolean equals(Object o)
- 比较指定对象与此向量的相等性。
- Object firstElement()
- 返回此向量的第一个组件(位于索引 ) 处的项)。
- Object get(int index)
- 返回向量中指定位置的元素。
- int hashCode()
- 返回此向量的哈希码值。
- int indexOf(Object elem)
- 返回此向量中第一次出现的指定元素的索引,如果此向量不包含该元素,则返回 -。
- int indexOf(Object elem, int index)
- 返回此向量中第一次出现的指定元素的索引,从 index 处正向搜索,如果未找到该元素,则返回 -。
- void insertElementAt(Object obj, int index)
- 将指定对象作为此向量中的组件插入到指定的 index 处。
- boolean isEmpty()
- 测试此向量是否不包含组件。
- Object lastElement()
- 返回此向量的最后一个组件。
- int lastIndexOf(Object elem)
- 返回此向量中最后一次出现的指定元素的索引;如果此向量不包含该元素,则返回 -。
- int lastIndexOf(Object elem, int index)
- 返回此向量中最后一次出现的指定元素的索引,从 index 处逆向搜索,如果未找到该元素,则返回 -。
- Object remove(int index)
- 移除此向量中指定位置的元素。
- boolean remove(Object o)
- 移除此向量中指定元素的第一个匹配项,如果向量不包含该元素,则元素保持不变。
- boolean removeAll(Collection c)
- 从此向量中移除包含在指定 Collection 中的所有元素。
- void removeAllElements()
- 从此向量中移除全部组件,并将其大小设置为零。
- boolean removeElement(Object obj)
- 从此向量中移除变量的第一个(索引最小的)匹配项。
- void removeElementAt(int index)
- 删除指定索引处的组件。
- protected void removeRange(int fromIndex, int toIndex)
- 从此 List 中移除其索引位于 fromIndex(包括)与 toIndex(不包括)之间的所有元素。
- boolean retainAll(Collection c)
- 在此向量中仅保留包含在指定 Collection 中的元素。
- Object set(int index, Object element)
- 用指定的元素替换此向量中指定位置处的元素。
- void setElementAt(Object obj, int index)
- 将此向量指定 index 处的组件设置为指定的对象。
- void setSize(int newSize)
- 设置此向量的大小。
- int size()
- 返回此向量中的组件数。
- List subList(int fromIndex, int toIndex)
- 返回此 List 的部分视图,元素范围为从 fromIndex(包括)到 toIndex(不包括)。
- Object[] toArray()
- 返回一个数组,包含此向量中以恰当顺序存放的所有元素。
- Object[] toArray(Object[] a)
- 返回一个数组,包含此向量中以恰当顺序存放的所有元素;返回数组的运行时类型为指定数组的类型。
- String toString()
- 返回此向量的字符串表示形式,其中包含每个元素的 String 表示形式。
- void trimToSize()
- 对此向量的容量进行微调,使其等于向量的当前大小。
vector数组的相关知识的更多相关文章
- java中数组的相关知识
1. 2.数组的命名方法 1)int[]ages=new int[5]; 2) int[]ages; ages=new int[5]; 3)int[]ags={1,2,3,4,5}; 4)int[ ...
- C数组的相关知识
数组的定义:具有相同数据类型的集合.在内存中开辟连续的存贮空间,从上往下,依次存储 补充:内存是以字节位单位的存储空间,内存中的每一个字节都唯一对应一个编号.这个编号就是地址.只要是存在内存中的数据都 ...
- python数组相关知识
1.np中的reshape函数,可以把矩阵重新划分成m行n列. arange(n)可以把 [0,n-1]装入数组中,一定要注意的是img.reshape()并不会改变原来的数组,所以需要另外新建一个数 ...
- Java 容器相关知识全面总结
Java实用类库提供了一套相当完整的容器来帮助我们解决很多具体问题.因为我本身是一名Android开发者,包括我在内很多安卓开发,最拿手的就是ListView(RecycleView)+BaseAda ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- 【转】java NIO 相关知识
原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...
- Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识
Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...
- C#相关知识总结
字符串相关知识 判断某字符串中包含某个字符,并过滤 if (string.Contains("*")) string = string.Replace('*',' '); // ...
- [转帖]xserver相关知识汇总
xserver相关知识汇总 https://blog.csdn.net/QTVLC/article/details/81739984 本文主要是从以下几个方面介绍xorg-xserver 相关的知 ...
随机推荐
- Vue2.0 【第一季】第1节 走进我的Vue2.0
目录 Vue2.0 [第一季]内部指令 第一节 走进我的Vue2.0 Vue2.0 [第一季]内部指令 记录一下我的代码地址:D:/Code/Vue 编辑器:VS code 前置知识: 1.HTML的 ...
- Java POI 实现Excel相同数据同一颜色,不同数据颜色交替显示
目录 1.效果图 2.具体代码实现 excel 读取工具类 excel写入和测试类 1.效果图 2.具体代码实现 excel 读取工具类 package utils; import java.io.F ...
- go例子(二) 使用go语言实现数独游戏
例子托管于github example.go package main import ( "./sudoku" ) func main() { //var smap ...
- JDK中线程池参详细解析
在jdk中为我们提供了三种创建线程池的方式,但是在阿里的编码规范里面都是明确禁止使用这三种api去创建线程池,推荐我们去自定义线程池.为什么? 要回答为什么,我们需要明白创建线程池时,各参数的作用: ...
- 在vscode中怎样debug调试go程序
随着互联网时代的飞速发展,我们编码使用的开发利器也在不断更新换代,古话说工欲善其事必先利其器,对于Java开发者而言,eclipse和idea这两款神器各有千秋,因自己的爱好可以选取不同的IDE,但是 ...
- Spring集成axis2
1.新建一个项目,结构如下 2.引入项目所需jar包 axis相关jar文件说明请查阅该博文 3.配置web.xml,注册axis2信息 <?xml version="1.0" ...
- 简单BBS项目开始(一)
1.BBS需求分析和创建ORM 1. 需要哪些表 1. UserInfo 1. username 2. password 3. avatar #头像图片 2. 文章表: title publish_d ...
- hdu1078 dfs+dp(记忆化搜索)搜索一条递增路径,路径和最大,起点是(0,0)
#include<bits/stdc++.h> using namespace std; typedef unsigned int ui; typedef long long ll; ty ...
- Cookie SameSite属性介绍及其在ASP.NET项目中的应用
一.Cookie SameSite属性介绍 就像大家已经知道的,一旦设置Cookie之后,在Cookie失效之前浏览器会一直将这个Cookie在后续所有的请求中都传回到Server端.我们的系统会利用 ...
- MySQL----DQL(查询数据库表中数据)
##DQL:查询表中的记录 1.语法: select 字段列名 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 lim ...