vector简单说明

vector也是一个容器,并且是个顺序容器。顺序容器有可变长数组vector双向链表list双端队列deque

顺序容器的定义,是因为容器元素的位置和他们的值大小无关,也就是说顺序容器不排序。

所有的容器都有以下两个方法:

    int size() : 返回容器对象中元素的个数
bool empty(): 判断容器对象是否为空

顺序容器还有以下成员函数:

begin():返回指向容器中第一个元素的迭代器。

end():返回指向容器中最后一个元素后面的位置的迭代器。

rbegin():返回指向容器中最后一个元素的反向迭代器。

rend():返回指向容器中第一个元素前面的位置的反向迭代器。

erase(...):从容器中删除![](https://img2018.cnblogs.com/blog/1169804/201903/1169804-20190310230711138-1115905688.png)

一个或几个元素。该函数参数较复杂,此处省略。

clear():从容器中删除所有元素。

front():返回容器中第一个元素的引用。

back():返回容器中最后一个元素的引用。

push_back():在容器末尾增加新元素。

pop_back():删除容器末尾的元素。

insert(...):插入一个或多个元素。该函数参数较复杂,此处省略。

迭代器的使用

迭代器是一个变量,迭代器可以指向容器中的元素,和指针类似。

迭代器的定义方式有以下几种:

  1. 正向迭代器

    容器类名::iterator 迭代器名;

  2. 反向迭代器

    容器类名::reverse_iterator 迭代器名;

  3. 常量正向迭代器

    容器类名::const_iterator 迭代器名;

  4. 常量反向迭代器

    容器类名::const_reverse_iterator 迭代器名;

迭代器的使用示例

vector<int> a;
vector<int>::iterator pr;
for(int i = 0; i < 3; i++)
{ a.push_back(i);
} cout << a.size()<<endl;
cout << a.back()<<endl; cout << "使用数组形式遍历vector内容"<< endl;
for(int i = 0; i < a.size(); i++){
cout << a[i] << " " ;
} cout << "使用正向迭代器形式遍历vector内容"<< endl;
for(pr = a.begin(); pr != a.end(); pr++){ //这里*pr就是迭代器pr指向的元素
cout << *pr << " ";
} cout << endl; cout << "使用反向迭代器形式遍历vector内容"<< endl;
vector<int>::reverse_iterator prr; for(prr = a.rbegin(); prr != a.rend(); prr++){ cout << *prr * 3 << " ";
} cout << endl;

vector的成员函数以及作用

vector()                        无参构造函数,将容器初始化为空

vector(int n)                 将容器初始化为有 n 个元素

vector(int n, const T & val)             假定元素的类型是 T,此构造函数将容器初始化为有 n 个元素,每 个元素的值都是 val

vector(iterator first, iterator last)            first 和 last 可以是其他容器的迭代器。一般来说,本构造函数初始化的结果就是将 vector 容器的内容变成与其他容器上的区间 [first, last) —致

void clear()                                    删除所有元素

bool empty()                                  判断容器是否为空

void pop_back()                            删除容器末尾的元素

void push_back( const T & val)    将 val 添加到容器末尾

int size()                                        返回容器中元素的个数

T & front()                                      返回容器中第一个元素的引用

T & back()                                      返回容器中最后一个元素的引用

iterator insert(iterator i, const T & val)            将 val 插入迭代器 i 指向的位置,返回 i

iterator insert( iterator i, iterator first, iterator last)            将其他容器上的区间 [first, last) 中的元素插入迭代器 i 指向的位置

iterator erase(iterator i)                    删除迭代器 i 指向的元素,返回值是被删元素后面的元素的迭代器

iterator erase(iterator first, iterator last)                删除容器中的区间 [first, last)

void swap( vector <T> & v)             将容器自身的内容和另一个同类型的容器 v 互换

vector的示例用法

#include<iostream>
#include<vector> int main(){ int a[4] = {1,3 ,2, 5}; vector<int> v(a,a+4); //将数组a的内容写入v
cout << "1) v.size = " << v.end() - v.begin() << endl; cout << "2) " << "use iterator ";
vector<int>::iterator p ;
for(p = v.begin(); p != v.end();p++)
cout << *p << " ";
cout << endl; //删除第二个元素
v.erase(v.begin() + 1);
cout << "3) " << "after delete second element ";
for(p = v.begin(); p != v.end();p++)
cout << *p << " ";
cout << endl; //在第二个元素后加入13
v.insert(v.begin()+1,13);
cout << "4) " << "insert 13 after second element ";
for(p = v.begin(); p != v.end();p++)
cout << *p << " ";
cout << endl; //使用vector的其他构造函数
vector<int> pa(5,10);
cout << "5) " << "use another struct function ";
for(p = pa.begin(); p != pa.end();p++)
cout << *p << " ";
cout << endl; //将V插在pa开头
pa.insert(pa.begin(),v.begin(),v.end());
cout << "6) " << "insert all of v into pa ";
for(p = pa.begin(); p != pa.end();p++)
cout << *p << " ";
cout << endl; //删除第二个到第四个之间的元素
pa.erase(pa.begin() + 1,pa.begin()+3);
cout << "7) " << "after delete elements that locate at 2th and 4th ";
for(p = pa.begin(); p != pa.end();p++)
cout << *p << " ";
cout << endl; return 0;
}

输出结果如下所示:

C++中vector的使用总结的更多相关文章

  1. c++中vector的用法详解

    c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间 ...

  2. C++的STL中vector内存分配方法的简单探索

    STL中vector什么时候会自动分配内存,又是怎么分配的呢? 环境:Linux  CentOS 5.2 1.代码 #include <vector> #include <stdio ...

  3. C++ 中vector的基本用法

    //在网上看了好久,自己总结了一下下,第一篇博客,呼呼,学到不少 基本概念 vector容器是一个模板类,可以存放任何类型的对象).vector对象可以在运行时高效地添加元素,并且vector中元素是 ...

  4. java中vector与hashtable操作详解

    众所周知,java中vector与hashtable是线程安全的,主要是java对两者的操作都加上了synchronized,也就是上锁了.因此 在vector与hashtable的操作是不会出现问题 ...

  5. [转贴]从零开始学C++之STL(二):实现一个简单容器模板类Vec(模仿VC6.0 中 vector 的实现、vector 的容量capacity 增长问题)

    首先,vector 在VC 2008 中的实现比较复杂,虽然vector 的声明跟VC6.0 是一致的,如下:  C++ Code  1 2   template < class _Ty, cl ...

  6. c++中vector等容器的实现机制

    stl容器区别: vector list deque set map-底层实现 stl容器区别: vector list deque set map (转) 在STL中基本容器有: vector.li ...

  7. 关于C++中vector和set使用sort方法进行排序

    C++中vector和set都是非常方便的容器, sort方法是algorithm头文件里的一个标准函数,能进行高效的排序,默认是按元素从小到大排序 将sort方法用到vector和set中能实现多种 ...

  8. STL中vector、list、deque和map的区别

    1 vector     向量 相当于一个数组    在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capac ...

  9. 【转】STL中vector、list、deque和map的区别

    1.vector 向量 相当于一个数组 在内存中分配一块连续的内容空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacity()函数 ...

  10. C++中vector容器的常用操作方法实例总结

    C++中vector容器的常用操作方法实例总结 参考 1. C++中vector容器的常用操作方法实例总结: 完

随机推荐

  1. Linux学习笔记之LVM基本应用,扩展及缩减实现

    0x00 LVM概述 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘 ...

  2. spring Boot 学习(八、Spring Boot与与监控管理)

    一.监控管理通过引入spring-boot-starter-actuator,可以使用Spring Boot为我们提供的准 生产环境下的应用监控和管理功能.我们可以通过HTTP,JMX,SSH协议来进 ...

  3. Navicat 破解版(操作非常简单)

    Navicat 破解版(操作非常简单) 参考这位老哥的博客,之前试过好多个,只有这个是最简单有效的 https://blog.csdn.net/WYpersist/article/details/86 ...

  4. node-exporter常用指标含义,比如在prometheus中查询node_load1的指标数据

    参考: https://blog.csdn.net/yjph83/article/details/84909319 https://www.gitbook.com/book/songjiayang/p ...

  5. Matlab访问者模式

    访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式.它 ...

  6. orcale的to_number方法

    转自:https://blog.csdn.net/tiantangdizhibuxiang/article/details/81034893 TO_NUMBER函数()是Oracle中常用的类型转换函 ...

  7. git的基本使用和多人协作合并管理

    1.代码版本控制工具 git 分布式 svn 集中式 2.配置git 配置用户名以及邮箱账号,用于记录用户信息 git config --global user.name 'wudaxun' git ...

  8. 5 dex文件

    Dex文件中数据结构 类型 含义 u1 等同于uint8_t,表示1字节无符号数 u2 等同于uint16_t,表示2字节的无符号数 u4 等同于uint32_t,表示4字节的无符号数 u8 等同于u ...

  9. WDA演练二:主界面设计(一)

    前面已经完成了登陆界面的开发,下面就是主页面的展示了. 一.新建菜单表: 这里说明一下,考虑到简单点,这里只用了两级菜单展示,表里在配置的时候也指挥有一级,二级. AUGRP对应前面用户表的GROUP ...

  10. nohup-长期运行进程

    我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败. 解决办法: 当用户注销(logout)或者网 ...