vector理解一波~~~
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)支线任务3——Largest Rectangle in Histogram
题目如下:(https://leetcode.com/problems/largest-rectangle-in-histogram/) Given n non-negative integers r ...
- 【BZOJ5333】荣誉称号(动态规划)
[BZOJ5333]荣誉称号(动态规划) 题面 BZOJ 洛谷 题解 今天早上贱狗老师讲的.然而我还是不会. 只好照着\(zsy\)代码大力理解一波. 首先观察等式,如果比较熟悉线段树,会发现就是线段 ...
- hdu6191(树上启发式合并)
hdu6191 题意 给你一棵带点权的树,每次查询 \(u\) 和 \(x\) ,求以 \(u\) 为根结点的子树上的结点与 \(x\) 异或后最大的结果. 分析 看到子树,直接上树上启发式合并,看到 ...
- copy()之绝版应用
我选用了一个稍稍复杂一点的例子,它的大致功能是:从标准输入设备(一般是键盘)读入一些整型数据,然后对它们进行排序,最终将结果输出到标准输出设备(一般是显示器屏幕).这是一种典型的处理方式,程序本身具备 ...
- C++ STL轻松导学
作为C++标准不可缺少的一部分,STL应该是渗透在C++程序的角角落落里的.STL不是实验室里的宠儿,也不是程序员桌上的摆设,她的激动人心并非昙花一现.本教程旨在传播和普及STL的基础知识,若能借此机 ...
- 七大查找算法(附C语言代码实现)
来自:Poll的笔记 - 博客园 链接:http://www.cnblogs.com/maybe2030/p/4715035.html 阅读目录 1.顺序查找 2.二分查找 3.插值查找 4.斐波那契 ...
- STL笔记(3) copy()之绝版应用
STL笔记(3) copy()之绝版应用 我选用了一个稍稍复杂一点的例子,它的大致功能是:从标准输入设备(一般是键盘)读入一些整型数据,然后对它们进行排序,最终将结果输出到标准输出设备(一般是显示器屏 ...
- C++ STL编程轻松入门基础
C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...
随机推荐
- Dubbo简单介绍及实例
1.概念 Dubbo是一个分布式服务框架,以及阿里巴巴内部的SOA服务化治理方案的核心框架.其功能主要包含:高性能NIO通讯及多协议集成.服务动态寻址与路由.软负载均衡与容错,依赖分析与降级等. 说通 ...
- HDU 3118 Arbiter 判定奇圈
题目来源:pid=3118">HDU 3118 Arbiter 题意:翻译过来就是不能有奇圈 每走一步状态会变化 当他回到起点时假设和原来的状态不一样 可能会死 求至少去掉多少条边能够 ...
- HTML5开发移动web应用—JQuery Mobile(2)-导航栏和页脚
导航栏部分的代码一般放置在data-role为header的div的内. <div data-role="header"> <a href="#&quo ...
- Servlet的部署开发细节以及注意事项
学习servlet最困难的我感觉还是配置,一開始是非常麻烦的.为了较好的学习,一開始还是以手动开发我认为比較好,可是真的有点把握给搞晕了,尤其是部署servlet方面非常麻烦,这里做一下简单的总结,前 ...
- 1987年国际C语言混乱代码大赛获奖的一行代码
macb() ? lpcbyu(&gbcq/_\021%ocq\012\0_=w(gbcq)/_dak._=}_ugb_[0q60)s+ 这是CoolShell博主之前做了一个非常有意思的在线 ...
- POJ 1183 反正切函数的应用(数学代换,基本不等式)
题目链接:http://poj.org/problem?id=1183 这道题关键在于数学式子的推导,由题目有1/a=(1/b+1/c)/(1-1/(b*c))---------->a=(b*c ...
- 例子:两个表根据productID合并
- Record is locked by another user
Oracle修改表中记录时出现record is locked by another user的问题 在操作表时没有commit,导致表被锁,只要执行下面两行语句,就可以了将行锁解锁了. Select ...
- 20170228 Z_po_send_email
FUNCTION zmm_po_send_email. function zmm_po_send_email. *"------------------------------------- ...
- 验证外部系统是否成功调用SAP RFC的方法有几种?