vector动态数组
vector是STL模板库中的序列式容器,利用它可以有效地避免空间的浪费。
创建vector容器
vector< int >v;vector< char >;vector< int >v[10]。
vector常用函数及功能
c.clear() 清空容器中所有元素
c.empty() 判断容器是否为空
c.pop_back() 删除容器最后一个元素
c.push_back() 在尾部加入一个元素
c.resize() 重新指定容器的长度
c.reserve() 保留适当的容量
c1.swap(c2) 交换c1和c2的值
swap(c1,c2) 同上
使用vector容器注意
vector<int>v,v相当于一个一维数组,长度不定,需注意如果当前数组v的长度为n,不可像普通数组一样写成v[n]=x,这样做是毫无意义的,但是如果在n以内,可以直接写做v[m]=x (m < n)。
在这里我要特别说一下resize()函数,先看下面的代码和输出
// resizing vector
#include <iostream>
#include <vector>
using namespace std;
int main ()
{
vector<int> myvector;
// set some initial content:
for (int i=1;i<10;i++) myvector.push_back(i);
myvector.resize(5);
myvector.resize(8,100);
myvector.resize(12);
cout << "myvector contains:";
for (int i=0;i<myvector.size();i++)
cout << ' ' << myvector[i];
cout << '\n';
return 0;
}
Output:
myvector contains: 1 2 3 4 5 100 100 100 0 0 0 0
从这里可以很明显的看出,如果利用resize()函数减少容器的长度,很简单直接把想要保留的长度作为参数传给它,如果增加长度x,执行c.resize(n+x,a),那么新增加部分的数组的值为a,但是如果不传第二个参数给它,就会默认为0。
其他函数我就在代码中为大家展示它的功能。测试代码如下
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>p;
for(int i=0;i<10;i++)
p.push_back(i);
swap(p[2],p[1]);
for(int i=0;i<p.size();i++)
cout<<p[i]<<" ";
cout<<endl;
p.resize(7);
for(int i=0;i<p.size();i++)
cout<<p[i]<<" ";
cout<<endl;
while(!p.empty())
{
p.pop_back();
}
p.clear();
cout<<p.size()<<endl;
return 0;
}
如有不当之处欢迎指出!!
vector动态数组的更多相关文章
- C++ vector动态数组
#include<vector>头文件 vector类称作向量类 百度百科的解释:https://baike.baidu.com/item/vector/3330482 我喜欢把知识点拿出 ...
- C++向量 vector动态数组
需要包含头文件, #include <vector> using namespace std; vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所 ...
- Vector(动态数组)怎么用咧↓↓↓
定义方式:vector<int> a; //二维vector<int>a[100] 在末尾压入容器:a.push_back(x);//二维 a[i].push_back(x) ...
- 八连通(vector动态数组法)
题目和一般的八连通一样,但行数和列数未定,相乘对于1e6,直接开a[1e6][1e6]的数组肯定会爆内存.用二维的动态vector就能很好的解决这个问题 #include<bits/stdc++ ...
- C++ Vector 动态数组
Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线 ...
- vc++简单的vector动态数组实现
#ifndef __MYVECTOR__ #define __MYVECTOR__ #include <Windows.h> #define SUCCESS 1 // 成功 #define ...
- 转:用STL中的vector动态开辟二维数组
用STL中的vector动态开辟二维数组 源代码:#include <iostream>#include <vector>using namespace std;int mai ...
- 学习日记--用Vector(向量)实现动态数组
Vector的使用方法: 能在添加元素时增加长度的数组称为动态数组或可变长数组.相对地,必须事先指定长度,只能容纳一定数量元素的数组称为静态数组.下面分享一下如何借助STL(标准模板库)中的Vecto ...
- vector:动态数组
vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确.它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存 ...
随机推荐
- requests_模拟登录知乎
如何登录知乎? 首先要分析,进行知乎验证的时候,知乎服务器需要我们提交什么数据,提交的地址.先进行几次登录尝试,通过浏览器中network中查看数据流得知,模拟登录知乎需要提供5个数据,分别是_xsr ...
- WebSphere--用户简要表
Application Server 含有 com.ibm.servlet.personalization.userprofile 软件包中的类,这些类使维护关于 Web 站点访问者的持久信息和利用 ...
- Python Django连接(听明白了是连接不是创建!)Mysql已存在的数据库
再声明一次!是连接不是创建!网上的一些人难道连接和创建这俩词都弄不懂就在那里瞎写一些文章! (Python Django连接存在的数据库) Python连接存在的数据库-------MySql 1.首 ...
- 通过反编译深入理解Java String及intern(转)
通过反编译深入理解Java String及intern 原文传送门:http://www.cnblogs.com/paddix/p/5326863.html 一.字符串问题 字符串在我们平时的编码工作 ...
- Hibernate (一)
1 JDBC的优缺点 优点: 直接底层操作,提供了简单.便捷的访问数据库的方法,跨平台比较强. 灵活性比较强,可以写复杂的SQL. 缺点: JDBC没有做到面向对象的编程,使得程序员的思考还停留在SQ ...
- 怎样查看MYSQL数据库的端口号
show variables like '%port%';
- jQuery图片延迟加载插件jquery.lazyload.js
在实际的项目开发中,我们通常会遇见这样的场景:一个页面有很多图片,而首屏出现的图片大概就一两张,那么我们还要一次性把所有图片都加载出来吗?显然这是愚蠢的,不仅影响页面渲染速度,还浪费带宽.这也就是们通 ...
- 端口扫描命令nmap
转:http://www.osyunwei.com/archives/2004.html 下面教大家在CentOS中用nmap查看主机端口: 一.安装nmap yum install nmap -y ...
- tomcat监控(二)
标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 这里介绍二种监控Tomcat的方法 使用windows版本的jdk监控 使用zabbix监控 ...
- ATS日志说明
在ATS日志中我们经常遇到形形色色的缓存结果码,为了更清晰地认识它们,相关资料整理到这里: TCP_HIT 请求对象的一份合法拷贝被缓存,ATS将发送该对象给client TCP_MISS 请求对象未 ...