代码编织梦想

1、vector的作用

vector是最常用的容器之一,功能十分强大,可以储存、管理各种类型的数据。在很多情况下可以用来代替功能比较局限的普通数组,因为我们知道,普通数组只能实现一对一的映射而不能实现一对多的映射,vector就是专门为了解决这个问题而诞生的。vector也可以称为动态数组,因为其大小是根据实时更新而变化的,正因为如此vector显得更加灵活易用。

举个例子
小明拥有一根香蕉和两个苹果
小芳拥有一根棒棒糖个三个梨
那么你试着思考一下,应当如何在程序中表示这种结构呢?这就是一对多映射的例子,学完vector就可以轻松解决这个问题了。

2、vector的定义

vector<储存的类型> 容器名
如:
储存int型的值 vector<int> v;
储存double型的值 vector<double> v;
储存string型的值 vector<string> v;
储存结构体或者类的值的值 vector<结构体名> v;

当然也可以定义vector数组:
储存int型的值 vector<int> v[n];
储存double型的值 vector<double> v[n];
等等,n为数组的大小

3、vector常用的成员函数

//这些都是必会的成员函数
size()//返回返回容器中元素个数
begin()//返回头部迭代器
end()//返回尾部+1迭代器
rbegin()//返回逆首部迭代器
rend()//返回逆尾部-1迭代器
front()//返回首个元素
back()//返回尾部元素
push_back()//在末尾添加一个函数
emplace_back()//和push_back()是一样的作用
pop_back()//弹出最后一个元素
empty()//判断是否为空
insert()//在指定位置插入元素
erase()//在指定位置删除元素
clear()//清空容器

详细解析:
(1)size()
size()是最常用的成员函数了,常用于vector的遍历和元素个数的查询

(2)push_back()
出了初始化以外,push_back()是vector最重要的修改函数了,复杂度为O(1),而insert()的复杂度为O(n),差距明显

(3)front()、back()
查询首元素和未元素,其实通过随机访问,v[0]、v[v.size()-1]是可以达到相同效果的,用front()和back()显得专业点

(4)begin()、end()
通常用来方便排序的,也可以用来遍历,但没必要,通过下标遍历更简单快捷,rbegin()、rend()则可以用来逆序排序

(5)insert()
insert (position, x );
insert (position, n, x );
insert (position, first, last );
插入新的元素,
第一个函数,在迭代器指定的位置前插入值为x的元素
第二个函数,在迭代器指定的位置前插入n个值为x的元素
第三个函数,在迭代器指定的位置前插入另外一个容器的一段序列迭代器first到last
复杂度很高,迫不得已不使用

(6)erase()
erase ( position );
erase (first, last );
删除元素或一段序列
同样地,复杂度很高,迫不得已不使用

示例代码:

#include<iostream>//c++标准头文件,可以使用cout,cin等标准编译用法
#include<vector>//使用vector时需要的头文件 
#include<algorithm>//包含许多内置函数,如排序、倒置、交换等函数 
using namespace std;//命名空间,防止重名给程序带来各种隐患,使用cin,cout,map,set,vector,queue时都要使用
//遍历函数 
void print(auto v){
	for(auto c:v){
		cout<<c<<' ';
	}
	cout<<endl;
}
int main(){
	vector<int> v;//定义一个 int型vector 
	
	v.emplace_back(3);
	v.emplace_back(4);
	v.emplace_back(1);
	v.emplace_back(2);
	cout<<"现在有的元素 :";
	print(v);
	cout<<endl;
	
	cout<<"v.front()="<<v.front()<<endl;
	cout<<"v.back()="<<v.back()<<endl;
	cout<<endl;
	
//	排序
	sort(v.begin(),v.end());
	cout<<"排序后 :";
	print(v);
	cout<<"v.front()="<<v.front()<<endl;
	cout<<"v.back()="<<v.back()<<endl;
	cout<<"v.size()="<<v.size()<<endl;
	cout<<endl;
	
//	插入5、6 
	v.insert(v.begin()+2,{5,6}); 
	cout<<"插入5、6后: ";
	print(v);
	cout<<endl;
	
//	倒置
	reverse(v.begin(),v.end());
	cout<<"倒置后: ";
	print(v);
	cout<<endl;
	
//	逆序排序 
	sort(v.rbegin(),v.rend());
	cout<<"逆序排序后 :";
	print(v);
	
//	判断是否为空
	cout<<"v.empty()="<<v.empty()<<endl; 
	cout<<"(v.size()==0)="<<(v.size()==0)<<endl;
	cout<<endl;
	
	v.clear();
	cout<<"v清空后"<<endl; 
	cout<<"v.empty()="<<v.empty()<<endl; 
	cout<<"(v.size()==0)="<<(v.size()==0)<<endl;
} 

4、vector的三种遍历方法

(1)迭代器iterator

代码:

#include<iostream>
#include<vector>
using namespace std;
int main(){
	vector<int> v;//定义 
	v.emplace_back(1);//插入元素1 
	v.emplace_back(3);//插入元素3
	v.emplace_back(2);//插入元素2
	vector<int>::iterator it;//使用迭代器
	for(it=v.begin();it!=v.end();it++){
		cout<<*it<<' ';
	} 
} 

运行结果:

1 3 2

(2)下标遍历

代码:

#include<iostream>
#include<vector>
using namespace std;
int main(){
	vector<int> v;//定义 
	v.emplace_back(1);//插入元素1 
	v.emplace_back(3);//插入元素3
	v.emplace_back(2);//插入元素2
	for(int i=0;i<v.size();i++){
		cout<<v[i]<<' ';
	}
} 

运行结果:

1 3 2

(3)foreach遍历

代码:

#include<iostream>
#include<vector>
using namespace std;
int main(){
	vector<int> v;//定义 
	v.emplace_back(1);//插入元素1 
	v.emplace_back(3);//插入元素3
	v.emplace_back(2);//插入元素2
	for(int c:v){
		cout<<c<<' ';
	}
} 

运行结果:

1 3 2

两种逆序遍历:
代码:

#include<iostream>
#include<vector>
using namespace std;
int main(){
	vector<int> v;//定义 
	v.emplace_back(1);//插入元素1 
	v.emplace_back(3);//插入元素3
	v.emplace_back(2);//插入元素2
	
//	迭代器法 
	vector<int>::reverse_iterator it;//使用迭代器
	for(it=v.rbegin();it!=v.rend();it++){
		cout<<*it<<' ';
	} 
	cout<<endl;
	
//	下标遍历法
	for(int i=v.size()-1;i>=0;i--){
		cout<<v[i]<<' ';
	} 
} 

运行结果:

2 3 1
2 3 1

foreach虽然简单易用,但是不支持逆序遍历

有小伙伴发现dev不能编译部分代码,那是因为dev还未支持c++11,可以看这篇文章解决
dev使用c++11教程

是不是很简单呢?

刚接触肯定会觉得难,多些做题多些用,熟悉了就容易了,兄弟萌,加油!!!

文章尚有不足,欢迎大牛们指正

感谢观看,点个赞吧

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_52115456/article/details/126024253

c++vector小白入门级-爱代码爱编程

STL是Standard Template Library的简称,中文名标准模板库,惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。从根本上说,STL是一些"容器"的集合,这些"容器"有list,vector,set,map等,STL也是算法和其他一

c++之vector入门_sandalphon4869的博客-爱代码爱编程

文章目录 一、头文件二、结构三、方法1.构造(1)直接赋值(2)不带参数的构造函数(3)带参数的构造函数(4)数组转容器(5)通过同类型的vector初始化 2.总结3.常用方法(1)c.pop_back()和

C++ Vector 使用快速入门-爱代码爱编程

C++ Vector 使用快速入门 #include <iostream> #include <vector> using namespace std; void vectorRelated(){ // 初始化方法 - initilization vector<int> vs1; vector<i

c++ map用法 入门必看 超详细-爱代码爱编程

1、map的作用 可以实现各种类型的映射。可以用数组来类比,都是由下标和值组成,但数组用法很局限,下标不能是负数,而且开数组需要消耗太多的内存,开到10^7就内存超限了。因此,很多时候都用高级的map类或vector类来代替数组。其里面的成员函数为我们写程序提供了很多便利。 2、map的定义 map<下标类型,值类型> 变量名; 如: int

c 语言vector用法,C++中vector的用法实例解析-爱代码爱编程

本文实例展示了C++中的vector用法,分享给大家供大家参考。具体如下: 一、概述 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小。 例如: // c语言风格

linux c vector,C++中的vector使用范例--推荐-爱代码爱编程

C++中的vector使用范例 一、概述 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小。 例如: // 风格 int myHouse[100] ; // 采用

C++入门篇(10)之vector使用-爱代码爱编程

文章目录 前言创建对象迭代器数据插入数据删除容量操作 前言 兜兜转转,我们来到了C++的vector章节,今天就讲讲怎么使用vector吧. vector的本质就是一个线性的顺序表,只不过在C++中被弄成了模板,以达到泛型编程目的.而使用的方面大概包括创建对象,数据插入,数据删除,数据访问,迭代器以及容量修改等方面 创建对象 在C++中

c++ vector的用法-爱代码爱编程

vector是STL的动态数组,可以在运行中根据需要改变数组的大小。 因为它以数组的形式储存,所以它的内存空间是连续的。 vector的头文件为#include<vector> 常用方法: 1.vector<int>a                                  创建一个动态数组a,a的默认初值为0

c++ set用法 入门必看 超详细-爱代码爱编程

1、set的作用 set就是集合的意思,集合的特点就是不会出现重复的内容。一般用来作查重或去重操作,举个场景,给出一个表: 姓名爱好小明打篮球小刚画画小明听音乐问该表中出现了多少个人,学会了set,就可以很轻松地解决这个问题 2、set的定义 set<储存的类型> 容器名 如: 储存int型的值 set<int> s; 储存do

c++ string用法 入门必看 超详细_旧林墨烟的博客-爱代码爱编程

1、string的作用 string就是字符串的意思,是c++用来代替char数组的数据结构。里面封装了一些常用的方法,方便我们地对其进行一些操作,而且string的空间大小是动态变化的,大大减小了不必要的花销 2、st

【刷题日记】c++入门必刷经典题目-爱代码爱编程

😀大家好,我是白晨,一个不是很能熬夜😫,但是也想日更的人✈。如果喜欢这篇文章,点个赞👍,关注一下👀白晨吧!你的支持就是我最大的动力!💪💪💪 文章目录 🏹 前言🗡 C++入门必刷经典题目🪓1.选择题🍕1.1

【零基础c++从入门到精通】(四) vector与字符串_c++ vector 字符串-爱代码爱编程

文章目录 4.1 Vector4.1.1vector的创建和初始化4.1.2vector的遍历4.1.3vector的其他操作 4.2 String字符串4.2.1 String的创建和初始化4.2.2