首页 > 其他分享 >三、(续)vector学习

三、(续)vector学习

时间:2023-09-05 21:35:17浏览次数:33  
标签:容器 begin 元素 学习 vector vec 向量

1、容器特性

1)顺序序列

顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。

2)动态数组

支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进行该操作。操供了在序列末尾相对快速地添加/删除元素的操作。

3)能够感知内存分配器的

容器使用一个内存分配器对象来动态地处理它的存储需求。

2、基本操作

a. 头文件#include<vector>

b. 创建vector对象:vector dp;

c. 尾部插入数字:vec.push_back(a);

d. 使用下标访问元素,cout<<dp[0]<<endl;记住下标是从0开始的。

使用迭代器访问元素.

vector::iterator it;

for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl;

e. 插入元素: vec.insert(vec.begin()+i,a);在第i个元素后面插入a;

f. 删除元素: vec.erase(vec.begin()+2);删除第3个元素

vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始

h. 向量大小:vec.size();

g. 清空:vec.clear();//清空之后,vec.size()为0

3、 vector容器的初始化

vector的使用首先需要加一个头文件#include<vector>;

vector<int> a; 最一般的初始化方法,就是定义一个容器a;

vector<int>a(n); 定义一个长度为n的容器a;

vector<int> a[n]; 声明了一个包含n空向量的数组。

vector<int>a(n,x); 定义一个长度为n,每个值都初始化为x;

vector<int> a{n}; 声明了一个包含单个元素n的向量

除此之外,还可以定义一个vector<int>a[10]; 也就是可以定义一个vector数组,里面的每个元素都是vector容器

4、 常见定义方法:

(1) vector<int> a(5); //定义了5个整型元素的向量(<>中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的.

(2)vector<int> a(5,1);//定义了5个整型元素的向量,且给出每个元素的初值为1

(3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值

(4)vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素

(5)int b[7]={1,2,3,4,5,9,8}; vector<int> a(b,b+7); //从数组中获得初值

标签:容器,begin,元素,学习,vector,vec,向量
From: https://blog.51cto.com/u_16244389/7379467

相关文章

  • C++学习笔记
    C++:C的编译器叫gcc,C++的编译器叫g++c++最容易发生的问题是内存泄漏问题,例如释放p所指的空间时,应该是free(p);p=NULL;很多人忘记将p归零,这样下次不小心调用了p就会出现内存泄漏问题,如果要把释放内存写成函数,示例如下(两层指针)voidfree_mem(int**pp){if(pp==NULL......
  • STL学习笔记
    迭代器迭代器(iterator)是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物。在<>一书中提供了23中设计模式的完整描述,其中iterator模式定义如下:提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式。迭代器案例#include<ios......
  • C++语言学习09
    STL标准模版库STL是StandardTemplateLibrary的缩写,中文名标准模版库,由惠普实验室提供(使用C++模板语言封装的常用的数据结构与算法)STL中有六大组件:算法:以函数模板形式实现的常用算法,例如:swap\max\min\find\sort容器:以类模板的形式实现的常用的数据结构,例如:vector\list\arra......
  • Markdown学习
    Markdown学习标题三级标题四级标题HelloWorld!HelloWorld!HelloWorld!HelloWorld! 引用选择狂神说JAVA,走向人生巅峰 分割线 图片 超链接点击跳转到狂神博客  列表13 ABC 表格名字性别生日张三男1997.1.1......
  • 《Java编程思想第四版》学习笔记23
    在Inning中,可以看到无论构建器还是event()方法都指出自己会“掷”出一个违例,但它们实际上没有那样做。这是合法的,因为它允许我们强迫用户捕获可能在覆盖过的event()版本里添加的任何违例。同样的道理也适用于abstract方法,就象在atBat()里展示的那样。“interfaceStorm”非......
  • C++学习笔记
    字符串的比较字符串比较一般不用关系运算符比较,“hello”=="hello"底层是存储地址的比较逻辑运算符&&||!&&短路与运算,如果第一个条件为真就判断下一个条件,为假结果为假;如果第一个为假,就直接返回假,不判断第二个条件||短路或运算:碰到条件为真就停止运算,返回真值!非逻辑运算符:条件......
  • 深度神经网络中基于卷积操作的自适应学习算法研究
    本文提出了一种基于卷积操作的自适应学习算法,用于深度神经网络中。该算法通过引入复杂的数学公式和高阶张量操作,实现了对复杂模式的准确建模和学习。我们通过对网络架构的改进和参数的优化,提高了模型的泛化能力和性能表现。实验结果表明,我们的算法在多个基准数据集上取得了优于现有......
  • 【学习笔记】笛卡尔树
    概述有若干二元组\((k,w)\),笛卡尔树要求关于\(k\)满足二叉搜索树的性质,关于\(w\)满足堆的性质。构建以要求\(w\)满足小根堆为例,使用单调栈维护当前的右链。现将所有二元组按\(k\)升序排序,每次插入一个元素时不断弹栈找到第一个小于\(w\)的节点,并将当前节点作为其右......
  • SQL学习
    SQL学习通过设置foreignkey(外键)和其他的表关联(不仅可以跟别的表关联,也可以和自己表上的字段关联)primarykey(主键)可以设置一个或多个防止数据重复。sql语句createDATABASEsql_tutorial;创建数据库,数据库名用反引号包围可以防止和关键字冲突showdatabases;展示数据库......
  • springCloud学习笔记整理
    springCloud学习笔记整理1.分布式分布式的概念:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。分布式架构的优缺点:优点:降低服务耦合有利于服务升级和拓展缺点:服务调用关系错综复杂2.微服务微服务的上述特性其实是在给分布式架构制......