Vector;

头文件:

#include<vector>

using namespacestd;

定义:

vector<类型>q;//类同于  "类型 q[];"

vector<类型>q[1010] //类同于  “类型 q[1010][]”

操作:

往vector存入一个个数据

函数名:w. push_back(数据);

#include<iostream>

#include<vector>

using namespace std;

vector<int>w;

int main()

{

int x;

for(inti=0;i<7;i++)

{

scanf("%d",&x);

w.push_back(x);//在容器的末端塞入数据。这个容器很高端,你就理解为类似数组的存法。

}

}

2.我们来更好地理解vector里面的东西;

这里有两个函数:q.begin(),q.end();

从英文名begin,end很好理解肯定是开头和结尾;= =废话。

那么,我们来看看他是什么(数据);

#include<stdio.h>

#include<iostream>

#include<vector>

using namespacestd;

int main()

{

vector<int>w;

for(int i=0;i<7;i++)    //我们把 i 塞进去

{

w.push_back(i);

}

printf("begin=%dend=%d\n",w.begin(),w.end());

}

结果:

很糟糕的数据- -那就是内存了。然后end-begin不就是7嘛~~~~~

我们称w.begin(),w.end()为迭代器(T^T好厉害的东西)迭代器是个所谓的复杂的指针【这里不多讲什么是迭代器,自己都不知道(啊,丢人..)】,那分别存了什么值呢?

#include<stdio.h>

#include<iostream>

#include<vector>

using namespacestd;

int main()

{

vector<int>w;

for(int i=0;i<7;i++)    //我们把 i 塞进去

{

w.push_back(i);

}

printf("begin=%dend=%d\n",*w.begin(),*w.end());

}

结果:

我们很好理解,w.begin()"指向"了第一个值—0,但是end呢,不是6?w.end()是末尾出去的那个,相当于我们定义数组a[10],我们在查询w.end(),就相当于查询a[10]这个元素。那么也就是说最后一个值,就是*(w.end()-1);

#include<stdio.h>

#include<iostream>

#include<vector>

using namespacestd;

int main()

{

vector<int>w;

for(int i=0;i<7;i++)    //我们把 i 塞进去

{

w.push_back(i);

}

printf("begin=%d end=%d 最后一个是:%d\n",*w.begin(),*w.end(),*(w.end()-1));

}

结果:

然后就是遍历:

这里有一个函数w.size()指这个vector所存的值的区域大小

#include<stdio.h>

#include<iostream>

#include<vector>

using namespacestd;

int main()

{

vector<int>w;

for(int i=0;i<7;i++)    //我们把 i 塞进去

{

w.push_back(i);

}

printf("size=%d\n",w.size());

}

结果:

那好,我们就可以遍历了;

这里有一种神奇的用法就是,和数组一样的!!!为什么呢?T^T不知道啊;

#include<stdio.h>

#include<iostream>

#include<vector>

using namespacestd;

int main()

{

vector<int>w;

for(int i=0;i<7;i++)    //我们把 i 塞进去

{

w.push_back(i);

}

for(int j=0;j<w.size();j++)

{

printf("第%d个=%d\n",j+1,w[j]);

}

}

结果:

还有一种就是我们知道,w.begin(),w.end()是[迭代器](一种复杂的【指针】),那么我们用同样的【迭代器】去遍历,也可以吧;

定义:vector<int>::iterator b;

#include<stdio.h>

#include<iostream>

#include<vector>

using namespacestd;

int main()

{

vector<int>w;

for(int i=0;i<7;i++)    //我们把 i 塞进去

{

w.push_back(i);

}

vector<int>::iterator b;

int cont=1;

for(b=w.begin();b!=w.end();b++)

{

printf("第%d个=%d\n",cont++,*b);

}

}

结果:

还有就是清空:

w.clear();

#include<stdio.h>

#include<iostream>

#include<vector>

using namespacestd;

int main()

{

vector<int>w;

for(int i=0;i<7;i++)    //我们把 i 塞进去

{

w.push_back(i);

}

vector<int>::iterator a;

int cont=1;

for(a=w.begin();a!=w.end();a++)

{

printf("第%d个=%d\n",cont++,*a);

}

w.clear();

printf("begin=%dend=%d\n",w.begin(),w.end());

if(w.begin()==w.end())

printf("清空啦啦啦啦!!!\n");

vector<int>::iterator b;

cont=1;

for(b=w.begin();b!=w.end();b++)

{

printf("第%d个=%d\n",cont++,*b);

}

}

结果:

OK,其他还有很多什么翻转啊,很高级的东西,试一试就什么都知道了。

vector理解一波~~~的更多相关文章

  1. 完全搞懂傅里叶变换和小波(1)——总纲<转载>

    无论是学习信号处理,还是做图像.音视频处理方面的研究,你永远避不开的一个内容,就是傅里叶变换和小波.但是这两个东西其实并不容易弄懂,或者说其实是非常抽象和晦涩的! 完全搞懂傅里叶变换和小波,你至少需要 ...

  2. 数据结构与算法(1)支线任务3——Largest Rectangle in Histogram

    题目如下:(https://leetcode.com/problems/largest-rectangle-in-histogram/) Given n non-negative integers r ...

  3. 【BZOJ5333】荣誉称号(动态规划)

    [BZOJ5333]荣誉称号(动态规划) 题面 BZOJ 洛谷 题解 今天早上贱狗老师讲的.然而我还是不会. 只好照着\(zsy\)代码大力理解一波. 首先观察等式,如果比较熟悉线段树,会发现就是线段 ...

  4. hdu6191(树上启发式合并)

    hdu6191 题意 给你一棵带点权的树,每次查询 \(u\) 和 \(x\) ,求以 \(u\) 为根结点的子树上的结点与 \(x\) 异或后最大的结果. 分析 看到子树,直接上树上启发式合并,看到 ...

  5. copy()之绝版应用

    我选用了一个稍稍复杂一点的例子,它的大致功能是:从标准输入设备(一般是键盘)读入一些整型数据,然后对它们进行排序,最终将结果输出到标准输出设备(一般是显示器屏幕).这是一种典型的处理方式,程序本身具备 ...

  6. C++ STL轻松导学

    作为C++标准不可缺少的一部分,STL应该是渗透在C++程序的角角落落里的.STL不是实验室里的宠儿,也不是程序员桌上的摆设,她的激动人心并非昙花一现.本教程旨在传播和普及STL的基础知识,若能借此机 ...

  7. 七大查找算法(附C语言代码实现)

    来自:Poll的笔记 - 博客园 链接:http://www.cnblogs.com/maybe2030/p/4715035.html 阅读目录 1.顺序查找 2.二分查找 3.插值查找 4.斐波那契 ...

  8. STL笔记(3) copy()之绝版应用

    STL笔记(3) copy()之绝版应用 我选用了一个稍稍复杂一点的例子,它的大致功能是:从标准输入设备(一般是键盘)读入一些整型数据,然后对它们进行排序,最终将结果输出到标准输出设备(一般是显示器屏 ...

  9. C++ STL编程轻松入门基础

    C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...

随机推荐

  1. Bootstrap全局CSS样式之button和图片

    .btn-default--button的默认样式. .btn-primary--button的首选样式: .btn-success--button的成功样式: .btn-info--button的一 ...

  2. [WASM] Access WebAssembly Memory Directly from JavaScript

    While JavaScript has a garbage-collected heap, WebAssembly has a linear memory space. Nevertheless u ...

  3. 使用RPi-Monitor监控、统计Guitar的运行状态

    前言 之前发在ickey社区上的一系列文章: 犹抱琵琶半遮面,无人知是荔枝来--unboxing & interview 一.二.三 葡萄美酒夜光杯,巧妇难为无米炊--资料与社区 一支穿云箭, ...

  4. iPhone 适配之路

    (1)1x时代 2007年,初代iPhone公布,屏幕的宽高是320*480像素.这个分辨率一直到iPhone3GS也保持不变. 那时编写iOS的App应用程序.仅仅支持绝对定位. 比方一个butto ...

  5. Linux-----Ubuntu设置开机启动模式

  6. java之static变量与全局、局部变量的区别

    static变量与全局.局部变量的区别 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式.这两者在存储方式上并无 ...

  7. windows核心编程之进程间共享数据

    有时候我们会遇到window进程间共享数据的需求,例如说我想知道系统当前有多少某个进程的实例. 我们能够在程序中定义一个全局变量.初始化为0.每当程序启动后就加1.当然我们我们能够借助第三方介质来储存 ...

  8. Devices下设备的进程显示为问号的问题

     adb shell getprop ro.debuggable      返回  ro.debuggable=0     说明这个机子的版本不是userdebug版本,是user版本     只有这 ...

  9. 代码书写C++ 中调用传递与指针传递根本区别

    从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变.而引用是一个别名,它在逻辑上不是独立的,它的存在具有依 ...

  10. bash shell parameter expansion

    1 ${parameter%word}和${parameter%%word} ${parameter%word},word是一个模式,从parameter这个参数的末尾往前开始匹配.单个%进行最短匹配 ...