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. 配置RIPng(PT)

    一:拓扑图 二:配置过程 1:首先为pc0:pc1: pc2 配置IPv6地址(注意标明前缀),可以手动配置也可以自动获取. 手动配置 自动获取 2:给路由器配置RIPng协议 全局开启RIPng协议 ...

  2. Service Worker 离线无法缓存Post请求的问题解决

    许多非REST API甚至可以用于读取数据的POST请求:典型的例子是graphql.soap和其他rpcpapi.但是,Post请求不能在一个现成的渐进式Web应用程序中缓存和脱机使用.浏览器的缓存 ...

  3. dubbo 调用服务超时

    先贴出错误报告: Failed to invoke the method *** in the service ***. Tried times of the providers [] (/) on ...

  4. pip install pytest on Mac (EI Capitan 10.11.6)

    升级了Mac 系统后发现用pip安装pytest出现下面链接中的问题,解决方法是在install时候加上--user选项: 1. 切到home directory: cd - 2. install p ...

  5. http中的filter拦截servlet之后获取body,字符流关闭,无法继续传入控制器

    https://blog.csdn.net/pyxly1314/article/details/51802652

  6. python,运算符,基本数据类型

    a = 'py' in 'python' b = 'py' not in 'python' print(a)print(b) in :判断一个前面一个字符串中的字符是否完整的出现在后面的字符串中,如果 ...

  7. 转:APP开发浅谈-Fiddler抓包详解

    原文地址:http://www.luoxudong.com/?p=306 Fiddler抓包工具在APP开发过程中使用非常频繁,对开发者理解HTTP网络传输原理以及分析定位网络方面的问题非常有帮助.今 ...

  8. calc()使用用法

    calc()是css3的一个新增的功能,用来指定元素的长度. 它是动态设置元素值,可由加减乘除算法得到最后计算值. 比如说“width:calc(50% + 5em)” 在使用less解析中calc运 ...

  9. linux下使用nmon工具对服务器性能进行检测

    1.nmon工具介绍: nmon工具是linux系统下可以对服务器及系统性能进行监测,CPU信息.CPU占用.内存使用.网卡使用等.最大的好处是此工具会将结果以列表的形式或者是模拟图形化的方式展示,不 ...

  10. python3百度设置高级搜索例子

    #=======================================#作者:邓沛友#2018.12.16=============================coding:utf-8f ...