Vector的使用方法:

能在添加元素时增加长度的数组称为动态数组或可变长数组。相对地,必须事先指定长度,只能容纳一定数量元素的数组称为静态数组。下面分享一下如何借助STL(标准模板库)中的Vector实现动态数组及管理数据。

仔细观察程序输出的值,有助于很快理解Vector的便利之处。

经典示例程序:

 #include<iostream>
#include<vector>
using namespace std; void print (vector<double> V)
{
for( int i = ; i < V.size() ; i++)
{
cout<<V[i]<<" ";
}
cout<<endl;
} int main ( int argc , const char * argv[])
{
vector<double> V; V.push_back(0.1);
V.push_back(0.2);
V.push_back(0.3);
V[] = 0.4;
print(V);//0.1 0.2 0.4 V.insert(V.begin() + ,0.8);
print(V);//0.1 0.2 0.8 0.4 V.erase(V.begin() + );
print(V);//0.1 0.8 0.4 V.push_back(0.9);
print(V);//0.1 0.8 0.4 0.9 return ;
}

Output

0.1 0.2 0.4
0.1 0.2 0.8 0.4
0.1 0.8 0.4
0.1 0.8 0.4 0.9

vector(double) V;是声明一个double类型变量名为V的向量,STL提供的vector是一个模板,所以需要我们在< >中指定类型,从而定义管理该类型数据的容器。在访问vector中的元素时,可以与数组一样使用“[ ]”运算符。

下面介绍Vector的成员函数示例:

函数名 功能 复杂度
size() 返回向量的元素数 O(1)
push_back(x) 在向量末尾添加元素x O(1)
pop_back() 删除向量的最后一个元素 O(1)
begin() 返回指向向量开头的迭代器 O(1)
end() 返回指向向量末尾(最后一个元素的后一个位置)的迭代器 O(1)
insert(p,x) 在向量的位置p处插入元素x O(n)
erase(p) 删除向量中位置P的元素 O(n)
clear() 删除向量中所有元素 O(n)

在使用vector的成员函数时,一定要注意相应的复杂度!!比如insert(),erase()与clear(),它们3个的复杂度是O(n)。

学习日记--用Vector(向量)实现动态数组的更多相关文章

  1. 标准模板库(STL)学习指南之vector向量

    vector – 一.  vector可以模拟动态数组 – 二.  vector的元素可以是任意类型T,但必须具备赋值和拷贝能力(具有public 拷贝构造函数和重载的赋值操作符) 三.必须包含的头文 ...

  2. 学习笔记之vector向量容器

    今天复习到vector向量容器,里面包括vector向量容器的一些优点以及具体的使用方法及代码,分享给大家. Vector向量容器不但能够像数组一样对元素进行随机访问,还可以在尾部插入元素,是一种简单 ...

  3. 容器(vector)、数组、new创建的动态数组,你到底用哪一个(执行效率分析)

    1.问题的提出 在没有了解vector之前,动态数组一般都是又new创建的.在了解vector后发现vector竟是那样方便好用,但方便的同时却是以牺牲执行效率为代价的.网上对vector和array ...

  4. C++向量 vector动态数组

    需要包含头文件, #include  <vector>    using namespace std; vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所 ...

  5. 分配一维动态数组or 二维动态数组的方法以及学习 new 方法or vector

    先来个开胃菜 // 使用new动态分配存储空间 #include<iostream> using std::cout; int main() { // 第1种方式 int *a=new i ...

  6. C++STL之Vector向量详解,用法和例子 一起学习 一起加油

                                                                                    C++ STL之vector用法总结 1 ...

  7. C++ vector动态数组

    #include<vector>头文件 vector类称作向量类 百度百科的解释:https://baike.baidu.com/item/vector/3330482 我喜欢把知识点拿出 ...

  8. vector:动态数组

    vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确.它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存 ...

  9. C++ STL之动态数组vector(⽮量)的使⽤

    写再最前面:摘录于柳神的笔记:   之前C语⾔⾥⾯⽤ int arr[] 定义数组,它的缺点是数组的⻓度不能随⼼所欲的改变,⽽C++⾥⾯有⼀个能完全替代数组的动态数组 vector (有的书⾥⾯把它翻 ...

随机推荐

  1. Apartment 2019

    Apartment 2019 最近在学习3D建模,Apartment 2019是我的个人项目. 初步的想法是,先在网上找公寓建筑的平面图以及室内效果照片,根据这些参考图像来练习建模与渲染. 建模顺序与 ...

  2. docker环境安装与开启远程访问

    一,安装docker 1,服务器安装 docker yum install docker 直接yum安装版本太低 2,卸载:老版本的Docker在yum中名称为docker或docker-engine ...

  3. js对象原型prototype

    javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用. 每一个构造函数都有一个属性叫做原型 1.1. 原型法设 ...

  4. 检查 TCP 80 端口是否正常工作

    检查 TCP 80 端口是否正常工作 2017-09-13 22:12:50 目录 Windows Server 2012 Windows Server 2008 CentOS 7.3 Ubuntu ...

  5. 记录Redis使用中遇到的两个问题(原子性及数据完整性)

    1.使用Redis作为分布式锁的原子性问题 原方案: ① SETNX $LOCK_BUSI_KEY $REQ_ID ② EXPIRE $LOCK_BUSI_KEY $LOCK_TIME 问题: 使用S ...

  6. VC工程产生文件后缀名解释

    [原文出自http://hi.baidu.com/zj0932zj/blog/item/b55f33cc7753c01700e92870.html ] .APS:存放二进制资源的中间文件,VC把当前资 ...

  7. Flink安装部署

    官网:https://ci.apache.org/projects/flink/flink-docs-release-1.7/ops/deployment/cluster_setup.html cd ...

  8. Markdown 简单语法

    标题 文本前面加上 '#' 和一个空格 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 加粗 文本两侧加上 '**' 加粗文本 斜体 文本两侧加上 '*' 斜体文本 斜体加粗 文本两侧加上 ...

  9. 七层协议&网络配置

    1.输入CMD 2.ipconfig-all 可查看详细的电脑网络配置,子网掩码(subnet mask)又叫网络掩码.地址掩码.子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网 ...

  10. NumPy基础

    一.NumPy ndarray (一)生成ndarray 表 数组生成函数 函数 描述(默认数据类型是float64) array 将输入数据(序列型对象)转换为ndarray,若不显示的指定数据类型 ...