C++的STL标准库学习(vector)

 vector的中文名字叫做“动态数组”或者“不定长数组”,有时也被翻译成“容器”。

初始化定义容器(可以为int,double,char,string,struct)等类型(一维)

一维,二维的动态数组

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int>a;//默认初始化,a为空  还可以为double,char,string型 
	vector<int>b(a);//用a定义b 
	vector<int>a(100,6);//a有100个值为6的元素
	vector<string>a(10,"hellow");//a有10个值为hellow的元素
	vector<string>b(a.begin(),a.end());//b是a的复制
	
	struct point{int x;y;}; vector<point>a;//定义结构型数组
	
    vector<int>a[MAXN]; //一维固定的
    vector<vector<int>>a[M];//第二维是动态的 
	
}

}
 

此处的迭代器本质上就是指针移动,vector<int>::iterator it :可以首先定义it为一个指针先指向a数组的首地址,当这种指针未指向末尾时候,指针地址+1,继续遍历,而(*it)输出的是这个指针所对应的元素。

 s.empty()函数的使用:判断数组s是否为空,若为空则返回1,否则返回0

#include<iostream>
#include<vector>
using namespace std;
vector<int>s; //初始化s为空 
int main()
{
	if(s.empty()) cout<<"empty"<<endl;//如果s为空,则返回1,否则返回0,若 if(1)则输出empty 
	vector<int>s(10,6);//给s赋值后,s容器内含有10个元素,内容都是6 ,则不为空,返回0 
	if(!s.empty()) cout<<"NO empty"<<endl;//!取反符号,0变成1 
	
}

  a.size()函数 :表示a数组的长度

  a.push_back(x)函数:表示将数据x插入a数组的尾部

#include<iostream>
#include<vector>
using namespace std;
vector<int>s; //初始化s为空 
vector<int>a;
int main()
{
	int x,i;
	for(i=0;i<5;i++)
	{
		cin>>x;//给x输入 
		a.push_back(x);//每次输入完后将x插入到容器a的尾部 
	}
	for(i=0;i<a.size();i++)//a.size() 这个函数求得表示a的长度 
	{
	   cout<<a[i]<<" ";
	}
	
}

 

(1)a.insert()函数 :某个位置插入元素,插入几个

第一种格式:a.insert(a,b,c) a表示位置,b表示数量,c表示内容 ,在a位置插入b个c

第二种格式:a.insert(a,c) a表示位置,c表示内容 ,在a位置插入1个c

(2)  a.end()函数 :表示a数组的尾地址

(3)   a.begin()函数   的使用:表示a数组的首地址

#include<iostream>
#include<vector>
using namespace std;
vector<int>s; //初始化s为空 
vector<int>a;
int main()
{
	int x,i;
	for(i=0;i<5;i++)
	{
		cin>>x;//给x输入 
		a.push_back(x);//每次输入完后将x插入到容器a的尾部 
	}
	a.insert(a.begin(),111);//在动态数组a的(最前面 )头部插入111 
	a.insert(a.end(),3,9);//在动态数组a的(最后面 )尾部插入3个9 (中间的数字表示个数),最右边是内容 
	a.insert(a.end()-2,666);//在动态数组a的倒数第三个位置插入666
	for(i=0;i<a.size();i++)
	  cout<<a[i]<<" "; 
}

 

 a.pop_back()函数 :删除a数组最后位置的一个元素

 a.erase()函数:删除a数组某个位置或某区间内全部元素(区间范围是前闭后开)

 a.erase(a.begin()+i,a.end()+j)删除的区间是位置[i,j-1]

#include<iostream>
#include<vector>
using namespace std;
vector<int>s; //初始化s为空 
vector<int>a;
int main()
{
	int x,i;
	for(i=0;i<10;i++)
	{
		cin>>x;//给x输入 
		a.push_back(x);//每次输入完后将x插入到容器a的尾部 
	}
	a.pop_back();//表示删除动态数组a的最后一个元素 
	a.erase(a.begin());//删除第一个元素
	for(i=0;i<a.size();i++)//a.size() 这个函数求得表示a的长度
	cout<<a[i]<<" ";
	cout<<endl;
	a.erase(a.begin()+1,a.begin()+3);//删除当前区间[2,4)内的元素,即删除第2,第3个位置的元素 
    for(i=0;i<a.size();i++)//a.size() 这个函数求得表示a的长度
	cout<<a[i]<<" ";
	    
		
	    return 0;
	    
}

 

使用sort和reverse函数要调用这个头文件 #include<algorithm>

reverse(a,b):将a和b位置区间内的元素反转(翻转)

sort(a,b):将a和b位置区间内的元素按照从小到大的顺序排序(升序)

#include<iostream>
#include<vector>
#include<algorithm>//使用sort和reverse要调用这个头文件 
using namespace std;
vector<int>s; //初始化s为空 
vector<int>a;
int main()
{
	int x,i;
	for(i=0;i<5;i++)
	{
		cin>>x;//给x输入 
		a.push_back(x);//每次输入完后将x插入到容器a的尾部 
	}

	reverse(a.begin(),a.end());//将数组a的全部元素全部 反转(翻转)过来 
	  	for(i=0;i<a.size();i++)
	  cout<<a[i]<<" "; 
}

 

#include<iostream>
#include<vector>
#include<algorithm>//使用sort和reverse要调用这个头文件 
using namespace std;
vector<int>s; //初始化s为空 
vector<int>a;
int main()
{
	int x,i;
	for(i=0;i<5;i++)
	{
		cin>>x;//给x输入 
		a.push_back(x);//每次输入完后将x插入到容器a的尾部 
	}

	sort(a.begin(),a.end());//将数组a的全部元素按照从小到大的顺序排序(升序) 
	  	for(i=0;i<a.size();i++)
	  cout<<a[i]<<" "; 
}

 a.clear函数:清除当前容器中所有元素

#include<iostream>
#include<vector>
#include<algorithm>//使用sort和reverse要调用这个头文件 
using namespace std;
vector<int>s; //初始化s为空 
vector<int>a;
int main()
{
	int x,i;
	for(i=0;i<5;i++)
	{
		cin>>x;//给x输入 
		a.push_back(x);//每次输入完后将x插入到容器a的尾部 
	}
	a.clear();//清空容器中所有的数据

	  	for(i=0;i<a.size();i++)
	  cout<<a[i]<<" "; 
}

(1)  a.empty()函数:判断数组a是否为空,若为空则返回1,否则返回0
(2)  a.size()函数 :表示a数组的长度
(3)  a.push_back(x)函数:表示将数据x插入a数组的尾部
(4)  a.insert()函数 :某个位置插入元素,插入几个

第一种格式:a.insert(a,b,c) a表示位置,b表示数量,c表示内容 ,在a位置插入b个c

第二种格式:a.insert(a,c) a表示位置,c表示内容 ,在a位置插入1个c

(5) a.end()函数 :表示a数组的尾地址

(6)  a.begin()函数   的使用:表示a数组的首地址

(7)a.pop_back()函数 :删除a数组最后位置的一个元素

(8)a.erase()函数:删除a数组某个位置或某区间内全部元素(区间范围是前闭后开)

   a.erase(a.begin()+i,a.end()+j)删除的区间是位置[i,j-1]
  
(9)a.clear()函数:清除当前容器中所有元素

(10)reverse函数:reverse(a,b):将a和b位置区间内的元素反转(翻转)

(11)sort函数:sort(a,b):将a和b位置区间内的元素按照从小到大的顺序排序(升序)

使用sort和reverse函数要调用这个头文件 #include<algorithm>

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++ STL(标准模板库)是C++标准库的一部分,提供了一组通用的数据结构和算法。STL标准库中文文档涵盖了STL的各个部分,包括容器(container)、迭代器(iterator)、算法(algorithm)等。 STL中文文档可以帮助开发者更好地理解和使用STL库,具体内容包括: 1. 容器:STL库提供了多种容器类型,如vector、list、map等,这些容器提供了不同的数据存储和操作方式。文档会介绍每种容器的特点、用法和示例代码。 2. 迭代器:迭代器是与容器配合使用的一种机制,通过迭代器可以访问和遍历容器中的元素。文档会介绍迭代器的种类、使用方法以及常见操作。 3. 算法:STL库提供了众多的算法,如排序、查找、复制等,可以在不同的容器上进行操作。文档会详细介绍每个算法的功能、参数和使用示例。 4. 函数对象:STL库提供了函数对象机制,可以将函数或函数对象作为算法的参数,用于执行特定的操作。文档会介绍函数对象的定义和使用方式。 STL标准库中文文档的作用主要有两个方面:一是帮助新手学习和理解STL库的使用方法,提供了丰富的示例和解释;二是方便开发者在实际项目中使用STL库,对于算法和容器的选择和使用提供了参考和指导。 总之,STL标准库中文文档是一份重要的资料,对于学习和使用C++的开发者来说都具有很大的价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值