向量(vector)

1.接口与实现

1.1

抽象数据类型:一组数据模型上定义的一组操作    数据类型是(char、int等)

数据结构:基于特定语言的,实现ADT的一整套算法。

1.2

向量:向量是数组的抽象与泛化,由一组元素按线性次序封装而成。

特点:1.各元素与(0,n)内的秩一一对以应

   2.元素的类型不限于基本类型

   3.操作、管理更加简洁、统一与安全

   4.可更为便捷的参与复杂数据结构的定制与实现

1.3

向量的操作

insert(0,9):在0的位置插入9

put(1,2)修改1位置上的元素为2

get(2)获取2上的元素

remove(2)移除位置2上的元素并返回

size()向量里面元素的个数

disordered()判断向量里面无序的数据对

find(5)找有没有5的元素 找到返回其下标 未找到则返回-1

sort()对里面的元素进行排序

search(9)查找向量里面是否有9找到则返回下标,未找到则返回不超过9的最大的那个元素的下表(顺序的向量)

uniquify()剔除掉向量里面重复的元素

2.可扩充向量

2.1 静态空间管理

开辟内部数组_elem[]并使用一段连续的物理空间

缺点:

会产生上溢合下溢

2.2 动态空间管理

在即将发生上溢时适当的扩大数组的容量

2.3 扩容的策咯

容量递增策略(2 4 6 8 10 12)累计增容费时间(O(n2))  分摊增容时间(O(n))

加倍试策略(2 4 8 16)累计增容费时间(O(n))  分摊增容时间(O(1))

2.4 分摊复杂度

平均复杂度:根据数据结构各种操作出现的概率分布,将对应的成本加权平均

分摊谈复杂度:对数据结构连续的实施足够多次操作,所需总体成本分摊至单次操作

3.无序向量

4.有序向量

原文地址:https://www.cnblogs.com/zhangfuxiao/p/9261578.html

时间: 2024-11-10 13:19:26

向量(vector)的相关文章

向量 vector

#include <iostream> #include <vector> #include <algorithm> using namespace std; bool cmp(int a,int b) { return a>b; } int main() { int n,i; cin>>n; vector<int> a(n); for(i=0;i<n;i++) { cin>>a[i]; } sort(a.begin(),

C++向量(Vector)

向量Vector: 向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器. 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版.在使用它时, 需要包含头文件#include<vector> 向量的声明: vector<int> a ; //声明一个int型向量avector<int> a(10) ; //声明一个初

学习STL -- 向量vector

在STL中向量vector是使用数组的形式实现的,因此向量具有顺序表的所有特点,可以快速随机存取任意元素.向量是同一种数据类型的对象的集合,每个对象根据其位置有一个整数索引值与其对应,类似于数组.与定义数组不同,向量在实例化是不需要声明长度,标准库负责管理和储存元素相关的内存,不用担心长度不够. vector容器中的元素是连续存放的,当容器中增加一个新元素的时候,如果原来的存储空间刚好被用完,那么系统需要重新申请一块更大的连续存储空间,把原来的元素复制到新的空间,并在最后添加新元素,最后再撤销久

Java 基于数组自定义实现容量不可变向量Vector

背景:假定集合 S 由 n 个元素组成,它们按照线性次序存放,于是我们就可以直接访问其中的第一个元素.第二个元素.第三个元素--.也就是说,通过[0, n-1]之间的每一个整数,都可以直接访问到唯一的元素 e,而这个整数就等于 S 中位于 e 之前的元素个数??在此,我们称之为该元素的秩( Rank).不难看出,若元素 e 的秩为 r,则只要 e 的直接前驱(或直接后继)存在,其秩就是 r-1(或 r+1).这一定义与 Java. C++之类的程序语言中关于数组元素的编号规则是一致的.支持通过秩

标准模板库中的向量(vector)

//C++数据结构与算法(第4版) Adam Drozdek 著  徐丹  吴伟敏<<清华大学出版社>> 向量是最简单的STL容器,其数据结构与数组类似,占据着一个连续的内存块.由于内存位置是连续的,所以向量中的元素可以随机访问,访问向量中任何一个元素的时间也是固定的.存储空间的管理是自动的,当要将一个元素插入到已满的向量中时,会为向量分配一个更大的内存块,将向量中的元素复制进新的内存块,然后释放旧的内存块.所以,向量是一个灵活的数组,是能够动态改变自身大小的数组. vector(

向量——Vector

向量--Vector #说明:Vector可以理解为升级版的数组,也可以看成是装数据的一个大容器,可以动态存放同一数据类型的数据 1. 引入库函数 #include<vector> 2. 定义说明(取头不取尾) vector<int> a; //声明一个int型向量a vector<int> a(10,2); //声明一个个数为10,初值为2的向量 vector<int> b(a.begin(),a.begin()+3);//将a中的第0个到第二作为向量b的

向量vector 容器浅析

一.什么是vector? 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container).跟任意其它类型容器一样,它能够存放各种类型的对象.可以简单的认为,向量是一个能够存放任意类型的动态数组. 二.容器特性 1.顺序序列 顺序容器中的元素按照严格的线性顺序排序.可以通过元素在序列中的位置访问对应的元素. 2.动态数组 支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进行该操作.操供了在序列末尾相对快速地添加/删除元素的操作. 3.能够感知内存分配器的

对多维向量vector&lt;vector&lt;int&gt; &gt; vec进行操作

直接写作vector<vector<int> > vec在VC++6.0下编译不过改做:    typedef std::vector<int> ROW;    std::vector<ROW> vec;    vec[0][0] = 0;     vec[0][1] = 1; #include <iostream>#include <vector>using namespace std;int main(){     vector&

c++中 的向量vector

#include<iostream> #include<ios> #include<iomanip> #include<vector> //使用向量 ,就包含向量的头文件 #include<string> #include<algorithm> using namespace std; int main() { cout << "please enter your first name :" <&

C++STL中的向量vector

#include<iostream>#include<vector>#include<algorithm>using namespace std;typedef vector<int> vt;int main(){ int i; vt v1(10); //定义向量10个元素,注意每个元素初始化为了0 for (i = 0; i < 10; i++)  cout << v1[i] << " "; cout &l