学习日记--用Vector(向量)实现动态数组
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(向量)实现动态数组的更多相关文章
- 标准模板库(STL)学习指南之vector向量
vector – 一. vector可以模拟动态数组 – 二. vector的元素可以是任意类型T,但必须具备赋值和拷贝能力(具有public 拷贝构造函数和重载的赋值操作符) 三.必须包含的头文 ...
- 学习笔记之vector向量容器
今天复习到vector向量容器,里面包括vector向量容器的一些优点以及具体的使用方法及代码,分享给大家. Vector向量容器不但能够像数组一样对元素进行随机访问,还可以在尾部插入元素,是一种简单 ...
- 容器(vector)、数组、new创建的动态数组,你到底用哪一个(执行效率分析)
1.问题的提出 在没有了解vector之前,动态数组一般都是又new创建的.在了解vector后发现vector竟是那样方便好用,但方便的同时却是以牺牲执行效率为代价的.网上对vector和array ...
- C++向量 vector动态数组
需要包含头文件, #include <vector> using namespace std; vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所 ...
- 分配一维动态数组or 二维动态数组的方法以及学习 new 方法or vector
先来个开胃菜 // 使用new动态分配存储空间 #include<iostream> using std::cout; int main() { // 第1种方式 int *a=new i ...
- C++STL之Vector向量详解,用法和例子 一起学习 一起加油
C++ STL之vector用法总结 1 ...
- C++ vector动态数组
#include<vector>头文件 vector类称作向量类 百度百科的解释:https://baike.baidu.com/item/vector/3330482 我喜欢把知识点拿出 ...
- vector:动态数组
vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确.它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存 ...
- C++ STL之动态数组vector(⽮量)的使⽤
写再最前面:摘录于柳神的笔记: 之前C语⾔⾥⾯⽤ int arr[] 定义数组,它的缺点是数组的⻓度不能随⼼所欲的改变,⽽C++⾥⾯有⼀个能完全替代数组的动态数组 vector (有的书⾥⾯把它翻 ...
随机推荐
- java 读取外部和source下配置文件
import java.io.File; import java.io.FileInputStream; import java.net.URL; import java.util.Map; impo ...
- windows使用im4java 提示FileNotFoundException
1)安装imageMagic时候要勾上convert那一行,确保安装目录下有convert.exe 2)使用image4java的全局类里面加上 //ImageMagick的安装路径 public s ...
- 《深度探索C++对象模型》读书笔记(二)
第三章:Data语意学 这一章主要讲了类中的数据在内存中是如何分配的,包括(多重)继承和多态. 让我们首先从一段代码开始: class X{}; class Y :virtual public X{} ...
- 安装Git Bash图文教程
1.下载Git Bash,下载地址 https://pan.baidu.com/s/1sllsi0d 2.双击Git-2.9.2-64-bit.exe,运行,进行安装:点击“Next” 3.设置安装路 ...
- intellij idea 导入mysql
我们先创建一个新的工程 下载包 下载完后测试一下连接 可以看到连接成功! 通过可视化工具查看本地的mysql的1234数据里面的数据
- pyspider 笔记
fetch_type='js' 运行 js代码
- windows开发各种dll缺失
推荐使用 depend这个工具,非常好用 http://www.dependencywalker.com/ 打开对应的文件,就能看到缺失了哪些dll 感谢博主: https://blog.csdn.n ...
- pyinstaller 打包生成exe之后运行提示‘no module name 'xxx'’错误
python 3.7 pyinstaller 3.4 具体情况: pycharm中点击运行可成功执行,生成正确结果,没有报错. 双击run.py(程序运行的主文件),运行,可生成正确结果,没有报错. ...
- c#switch语句的用法
switch条件语句是一种很常用的选择语句,它与if条件语句不同,它只针对某个表达式的值作出判断,从而决定执行哪一段代码. switch条件语句用到的关键字: switch case break de ...
- hbase的常用的shell命令&hbase的DDL操作&hbase的DML操作
前言 笔者在分类中的hbase栏目之前已经分享了hbase的安装以及一些常用的shell命令的使用,这里不仅仅重新复习一下shell命令,还会介绍hbase的DDL以及DML的相关操作. hbase的 ...