在刷ccf题的时候日常做完去网上查看别的同学怎么做的

发现有使用vector后三十几行代码就写出来的,虽然时间复杂度和我一样十几毫秒,but !我看中了它的代码量啊!多么的少啊!

所以百度了vector的使用方法,这里,只总结一些我暂时会用到的

1.简单的介绍vector:

在c++语言中使用,是一种顺序容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组,它的随机访问快,在中间插入和删除慢,但在末端插入和删除快。/ps 官方用语

2.什么时候使用:

如果你想使用数组来进行插入删除查找时,其中会不可避免的遇到移动一大堆的数组元素,比如某个元素的值被删除,那么后面的都要向前移动的时候,推荐你使用vector,因为它不考虑数组下标啊!!!通过指针删除元素的值可以说非常方便了!节省了很大的时间啦,但是问题也是在这里出现:在中间插入与删除慢,emmm这个慢其实比大容量数组我们自己移动快很多好伐

3怎么使用:

头文件:

#include <vector> 

基本操作:

//容量
vec.size();//向量大小
vec.max_size();//向量最大容量
vec.resize();//更改向量大小
vec.capacity();//向量真实大小
vec.empty();//向量判空
vec.shrink_to_fit(); //减少向量大小到满足元素所占存储空间的大小
//修改
vec.assign(); //多个元素赋值,类似于初始化时用数组进行赋值
vec.push_back();//末尾添加元素
vec.pop_back();//末尾删除元素
vec.insert();//任意位置插入元素
vec.erase();//任意位置删除元素
vec.swap();//交换两个向量的元素
vec.clear();//清空向量元素
//迭代器
vec.begin();//开始指针
vec.end(); //指向最后一个元素的下一个位置
vec.cbegin(); //指向常量的开始指针,意思就是不能通过这个指针来修改所指的内容,但还是可以通过其他方式修改的,而且指针也是可以移动的。
vec.cend();//指向常量的末尾指针:
//元素的访问
vec[]; //下标访问,并不会检查是否越界
vec.at(); //at方法访问,以上两者的区别就是at会检查是否越界,是则抛出out of range异常
vec.front();//访问第一个元素:
vec.back();//访问最后一个元素:
int* p = vec.data(); //返回一个指针,可行的原因在于vector在内存中就是一个连续存储的数组,所以可以返回一个指针指向这个数组。

4.使用案例

#include<cstdio>
#include<vector>
#include<iostream>
#include<algorithm> using namespace std; int main()
{
int num;
vector<int>v1; //定义vector
vector<int>::iterator it; //定义vector迭代器
cout<<"请输入5个整数:"<<endl;
for(int i = ;i <= ;i++)
{
cin>>num;
v1.push_back(num);
}
printf("\n");
for(it = v1.begin();it != v1.end();it++)
cout<<*it<<" ";
cout<<endl;
it = v1.begin();
it += ;
cout<<"第二个数为: "<<*it<<" "<<endl;
v1.erase(it); //删除倒数第二个数
it = v1.begin();
it += ;
cout<<"删除之前第二个数后,新的第二个数为:"<<*it<<" "<<endl;
v1.clear();
cout<<"清空后元素个数为:"<<v1.size()<<endl; return ;
}

可以看见,我们删除一个元素后,该位置自动由后面的元素填充,不需要我们手工移啊移,而且也不需要实现定义数组的大小,避免溢出,很方便啦

vector简单使用的更多相关文章

  1. C++线性序列容器<vector>简单总结

    C++线性序列容器<vector>简单总结 vector是一个长度可变的数组,使用的时候无须声明上限,随着元素的增加,Vector的长度会自动增加:Vector类提供额外的方法来增加.删除 ...

  2. c++ 头文件 及 sort 和 vector简单介绍

    c++  sort :http://www.16kan.com/post/997260.html http://wenku.baidu.com/view/e064166daf1ffc4ffe47ac6 ...

  3. c++ vector 简单实现。

    第二次修改: 1)熟悉基本的模板编程,头文件和定义必须放到一起. 2)熟悉内存管理模板类 allocator<T>. 1.使用标准库的内存管理类 allocator<T> 代替 ...

  4. C++STL vector简单使用练习1

    #include <iostream> #include <vector> #include <numeric> using namespace std; int ...

  5. Vector简单介绍

    /*枚举就是Vector特有的取出方式发现枚举和迭代器很像其实枚举和迭代是一样的因为枚举的名称以及方法的名称都过长了.所以被迭代器取代了枚举郁郁而终了. */ import java.util.*;c ...

  6. STL vector简单用法

    初涉c++,此为<算法笔记>中的内容,有待个人理解完善. vector vector翻译为向量,叫做"变长数组"更容易理解. 头文件:#include<vecto ...

  7. STL - 容器 - vector简单应用

    VectorTest.cpp #include <vector> #include <iostream> #include <string> #include &l ...

  8. c++vector简单实现

    const int DEFAULT_CAP = 3; template <typename T> class vector { // int capacity; T* _data; int ...

  9. vector简单常用用法

    Vector是什么? vector翻译为向量,从某种角度来说就是一个可以变长的数组,它会根据需要自动扩充数组的容量,除此之外其是一个STL中的模板类,其 还具有一些内部的方法. Vector的使用方法 ...

随机推荐

  1. POJ 3613 Cow Relays【k边最短路】

    题目链接:http://poj.org/problem?id=3613 题目大意: 给出n头牛,t条有向边,起点以及终点,限制每头牛放在一个点上,(一个点上可以放多头牛),从起点开始进行接力跑到终点, ...

  2. 什么是Java多线程?

    第五阶段 多线程 前言: 一个场景:周末,带着并不存在的女票去看电影,无论是现场买票也好,又或是手机买票也好,上一秒还有位置,迟钝了一下以后,就显示该座位已经无法选中,一不留神就没有座位了,影院的票是 ...

  3. 【AtCoder】ARC068

    ARC 068 C - X: Yet Another Die Game 显然最多的就是一次6一次5 最后剩下的可能需要多用一次6或者6和5都用上 #include <bits/stdc++.h& ...

  4. 【LOJ】#3102. 「JSOI2019」神经网络

    LOJ#3102. 「JSOI2019」神经网络 首先我们容易发现就是把树拆成若干条链,然后要求这些链排在一个环上,同一棵树的链不相邻 把树拆成链可以用一个简单(但是需要复杂的分类讨论)的树背包实现 ...

  5. redhad 7.0更换yum源

    1.  卸载红帽yum源 rpm –e $(rpm –qa|grep yum) --nodeps 2.删除所有repo相关文件 rm –rf /etc/yum.conf rm –rf /etc/yum ...

  6. 利用Mathpix Snipping Tool轻松在markdown/LaTeX中输入电子书和论文的数学公式

    最近写图形学博客写累了,公式太多了,一个个输入实在太累,所以从数学建模队友那里吃了一个安利. 官网下载 下载安装后,直接新建一个截图,就可以转成LaTeX数学公式了.效果如下: 爽的一批啊!!! 另外 ...

  7. Scala学习二十二——定界延续

    一.本章要点 延续让你可以回到程序执行当中之前的某个点; 可以在shift块中捕获延续 延续函数一直延展到包含它的reset块的尾部 延续所谓的”余下的运算“,从包含shift的表达式开始,到包含它的 ...

  8. C#异步编程中的最佳实践(做法)

    原文地址Stephen Cleary 写得很详细,尤其讲到了 GUI 上下文调用,在APS.NET中它会阻塞 GUI 线程,从而导致死锁.而控制台中却不存在这个问题. 比如开发过程中本地写控制台程序测 ...

  9. faceswap深度学习AI实现视频换脸详解

    给大家介绍最近超级火的黑科技应用deepfake,这是一个实现图片和视频换脸的app.前段时间神奇女侠加尔盖朵的脸被换到了爱情动作片上,233333.我们这里将会从github项目faceswap开始 ...

  10. Django rest-framework框架-解析器

    解析器: 开始: django: request.POST/ request.body 满足一下两个要求POST中才有值 1. 如果请求头中的 Content-Type: application/x- ...