C++标准库类模板vector
vector是C++标准库STL中的一个重要的类模板,相当于一个更加健壮的,有很多附加能力的数组
使用vector前首先要包含头文件
#include<vector>
1.vector的常用操作:
vector < int > vector_1(size) //创建一个数组vector_1,长度为size
vector<int> vector_2(vector_1) //创建一个数组vector_2,并把vector_1中所有元素复制过去
vector<int> vector_3(vector_1.begin(),vector_1.begin()+N)
//创建一个数组vector_3,并把vector_1中前N个元素复制过去
vector < int > vector_4(size,num) //创建一个数组vector_1,长度为size,初始化元素为num
vector.resize(size); //重新设置数组大小为size
vector.front() //返回数组首元素
vector.back() //返回数组尾元素
vector.begin() //获取数组头指针
vector.end() //获取数组尾指针
vector.size() //返回数组的长度
vector[i] //访问数组的第i-1个元素
vector.insert(vector.begin()+N,elem); //在数组的第N个元素后插入元素elem.
vector.push_back(elem); //在数组的最后一个元素后插入一个元素elem.
vector.erase(vector.begin()+M,vector.begin()+N);
//删除数组的第M个到第N个元素
vector.pop_back(); //删除数组的最后一个元素
vector.clear(); //清空数组中的元素
vector.empty(); //判断数组是否为空,若为空返回true,不为空返回false
例:
/**********
*Author:Pug_
*Time:2019-3-1 22:00:45
*Version:1.0
*FUnction:Use of vector
***********/
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cstdio>
#include <cstdlib>
//首先要包含头文件
#include<vector>
using namespace std;
int main(){
//vector是一个可存放任意类型数据的动态数组
//数据类型除了int类型还可为其他的类型 ,size可为一个常量或变量
//初始化后向量integer中默认值为0;
int size = 10;
vector < int > integers(size);
//复制向量integer,复制为integers1
vector<int> integers1(integers);
//复制向量integer前5个元素,复制为integers2
vector<int> integers2(integers.begin(),integers.begin()+5);
//创建 integers3长度为size,默认值为1
vector < int > integers3(size,1);
integers.front();//获取首元素
integers.back();//获取尾元素
integers.begin();//获取头指针
integers.end(); //获取尾指针
//获取向量 integers的长度
cout<<"integers的长度:"<<integers.size()<<endl;
//通过下标读取元素
for(int i = 0;i<integers.size();i++){
cout<<setw(4)<<integers[i];
}
//通过下标输入元素
for(int i = 0;i<integers.size();i++){
cin>>integers[i];
}
//在 integers的第n个元素后插入元素123.
int n = 1;
integers.insert(integers.begin()+n,123);
//在integers的最后一个元素后插入一个元素 123.
integers.push_back(123);
//删除integers的第m个到第n个元素 (第1个到第3个)
int m = 1;
n = 3;
integers.erase(integers.begin()+m,integers.begin()+n);
//删除integers的最后一个元素
integers.pop_back();
//清空 integers中的元素
integers.clear();
//返回integers是否为空,若为空返回1,不为空返回0
integers.empty();
return 0;
}
2.使用vector 创建二维数组
vector< vector<int> > matrix_vector(SIZE_ROW, vector<int> (SIZE_COL));
//创建一个二维数组,行数为SIZE_ROW,列数为SIZE_COL.
/**********
*Author:Pug_
*Time:2019-3-14 22:00:45
*Version:1.0
*FUnction:Use of 2 d vector
***********/
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <vector>
using namespace std;
int main(){
//创建一个3行3列数组
vector< vector<int> > v2d(3, vector<int> (3));
//赋值
for(int i = 0;i<v2d.size();i++){
for(int j = 0;j<v2d[0].size();j++){
v2d[i][j] = i*v2d[0].size()+j;
}
}
//输出
for(int i = 0;i<v2d.size();i++){
for(int j = 0;j<v2d[0].size();j++){
cout<<setw(5)<<v2d[i][j];
}
cout<<endl;
}
cout<<endl<<endl;
//将二维数组重新设置行列数
//先重新设置行数再重新设置列数
v2d.resize(8);
for(int i = 0;i<v2d.size();i++){
v2d[i].resize(8);
}
//赋值
for(int i = 0;i<v2d.size();i++){
for(int j = 0;j<v2d[0].size();j++){
v2d[i][j] = i*v2d[0].size()+j;
}
}
//输出
for(int i = 0;i<v2d.size();i++){
for(int j = 0;j<v2d[0].size();j++){
cout<<setw(5)<<v2d[i][j];
}
cout<<endl;
}
return 0;
}
C++标准库类模板vector的更多相关文章
- C++标准库类模板(stack)和 队列(queue)
在C++标准库(STL)中有栈和队列的类模板,因此可以直接使用 1.栈(stack):使用栈之前,要先包含头文件 : #include<stack> stack.push(elem); / ...
- C++ 标准库类型-String,Vector and Bitset
<C++ Primer 4th>读书摘要 最重要的标准库类型是 string 和 vector,它们分别定义了大小可变的字符串和集合.这些标准库类型是语言组成部分中更基本的那些数据类型(如 ...
- C++ Primer学习笔记2--c++标准库中的 vector、string 和 bitset 类型
一.string #include <string> using std::string 初始化函数: string s1; 默认构造函数 s1 为空串 ...
- 标准库类型之vector
上篇中遗留了一个小作业,就是用string中的find_first_not_of和find_last_not_of函数来实现字符串左右空格的去除,先来完成它,实现的思路是先来编写去除左空格,然后再编写 ...
- 发布一个stl标准库容器类(vector/list)的安全删除方法
话不多说,看代码. #include <functional> #ifndef ASSERT #include <cassert> #define ASSERT assert ...
- ZT 类模板Stack的实现 by vector
*//*第3章 类模板 与函数相似,类也可以被一种或多种类型参数化.容器类就是一个具有这种特性的典型例子,它通常被用于管理某种特定类型的元素.只要使用类模板,你就可以实现容器类,而不需要确定容器中元素 ...
- 谈谈两种标准库类型---string和vector
两种最重要的标准库---string和vector string和vector是两种最重要的标准库类型,string表示可变长的字符序列,vector存放的是某种给定类型对象的可变长序列. 一.标准库 ...
- C++primer第三章标准库类型
除第二章介绍的基本数据类型外,C++ 还定义了一个内容丰富的抽象数据类型标准库. 本章将介绍标准库中的 vector.string 和 bitset 类型. string 类型支持长度可变的字符串 v ...
- Go标准库之html/template
html/template包实现了数据驱动的模板,用于生成可防止代码注入的安全的HTML内容.它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用html/templ ...
随机推荐
- NArrange 配置与使用
1. 在VS中设置一下就可以用了 2.It is also recommended to setup a restore command using the same parameters, repl ...
- Spring框架总结(十二)
问题引入: 程序的“事务控制”, 可以用aop实现! 即只需要写一次,运行时候动态植入到业务方法上. 一个业务的成功: 调用的service是执行成功的,意味着service中调用的所有的d ...
- 关于解决百度sitemap1.0一直提示校验中问题
实际原因是php设置问题,各个版本对应的设置有些不一样. php版本改成就好了. 修复方法:在插件里找到插件:\baidusubmit\inc.找到sitemap.php,查找curl_setopt( ...
- Assigning retained object to weak property object will be released after assignment
在ARC中,如果添加了weak的属性.初始化了相关的object然后给这个属性赋值的时候就会看到Xcode给出这个提示. 这个时候可以这么处理:在别的地方已经retain这个object的引用. @p ...
- 敏捷软件开发:原则、模式与实践——第11章 DIP:依赖倒置原则
第11章 DIP:依赖倒置原则 DIP:依赖倒置原则: a.高层模块不应该依赖于低层模块.二者都应该依赖于抽象. b.抽象不应该依赖于细节.细节应该依赖于抽象. 11.1 层次化 下图展示了一个简单的 ...
- 编写高质量代码改善C#程序的157个建议——建议88:并行并不总是速度更快
建议88:并行并不总是速度更快 并行所带来的后台任务及任务的管理,都会带来一定的开销,如果一项工作本来就能很快完成,或者说循环体很小,那么并行的速度也许会比非并行要慢. 看这样一个例子,我们比较在同步 ...
- C#基础入门 四
C#基础入门 四 方法参数 值参数:不附加任何修饰符: 输出参数:以out修饰符声明,可以返回一个或多个给调用者: 如果想要一个方法返回多个值,可以用输出参数来处理,输出参数由out关键字标识,如st ...
- 【Linux】CentOS7上解压zip需要安装uzip
1.安装zip.unzip应用 yum install zip unzip 2.压缩和解压文件 以下命令均在/home目录下操作 cd /home #进入/home目录 a.把/home目录下面的my ...
- jquery中animate({left:'-='+width})中的 '-='+是什么意思?
left:'-='+width的意思是:left属性的最终值,是left现有值减去width这个值 例如:left:'200px' 意思是left最终值变成200left:'+200px' 意思与上面 ...
- NOI2017 酱油记
侥幸混进市队让我晚退役了几个月..不过终究还是退役了呢..这应该是最后一篇游记了吧.. 考前半个月都在安徽集训..然后发现所有人都停课集训..只有我暑假了开始.. 反正上课各种听不懂..各种被大佬虐. ...