C++标准模板库(STL)

vector的常见用法

vector可以理解为“变长数组”,也即“长度根据需要而自动改变的数组”。
1.vector的定义
vectorname和一维数组一样,这里的typename可以是任何基本类型
注意:如果typename也是一个STL容器,定义的时候要记得在>>符号之间加上空格 如:(a)vector<vector> name这里很容易联想到二维数组的定义,即其中一维是一个数组的数组。那么vector数组也是一样,即Arrayname[]中的每一个元素都是一个vector
(b)定义vector数组的方法:vectorArrayname[arraySize]这种写法与上一种不同的 是,这种写法的一维长度已经固定为arraySize,另一维才是变长。
2.vector容器内元素的访问
(1)通过下标访问
这种方式与数组的下标访问方式一样,不再赘述。
(2)通过迭代器访问
迭代器(iterator)可以理解为一种类似指针的东西,使用方式如下:
vector::iterator it;
这样就得到了迭代器it,并且可以通过*it来访问vector里的元素。

#include<stdio.h>
#include<vector>
using namespace std;
int main( )
{
	vector<int> vi;
	for(int i=1;i<=5;i++)
	vi.push_back(i);
	vector<int>::iterator it=vi.begin();
	for(int i=0;i<5;i++)
	printf("%d ",*(it+i));
	return 0;
}

需要注意的是,在常用的STL容器中,只有在vector和string中,才允许使用vi.begin()+3这种迭代器加上整数的写法。
3.常用函数
(1)push_back
这个函数就是在vector后边添加一个元素x。
(2)pop_back()
这个函数就是删除vector的尾元素。
(3)size()
这个函数用来获得vector中元素的个数。
(4)clear()
用来清空vector中所有元素。
(5)insert
insert(it,x)用来像任意的迭代器it处插入一个元素x。
如:vi.insert(vi.begin()+2,-1);//将-1插入vi[2]的位置。
(6)erase()
erase()有两种用法:删除单个元素,删除一个区间内的所有元素。
vi.erase(vi.begin()+3);//删除vi[3]
vi.erase(vi.begin()+1,vi.begin()+4);//删除vi[1],vi[2],vi[3]

set的常见用法详解

set就是集合,是一个内部自动有序且不含重复元素的容器
1.set容器内元素的访问
set只能通过迭代器访问
由于除开vector和string之外的STL容器都不支持(it+i)的访问方式,因此只能按如下方式枚举*:

#include<cstdio>
#include<set>
using namespace std;
int main( )
{
	set<int>st;
	st.insert(3);
	st.insert(5);
	st.insert(2);
	st.insert(3);
	for(set<int>::iterator it=st.begin();it!=st.end();it++)
	printf("%d ",*it);
	return 0;
}

运行结果不难发现,set内的元素自动递增排序,且自动去除了重复元素
2.set常用函数
(1)insert()
insert(x)可将x插入set容器中,并且自动递增排序和去重。
(2)find()
find(value)返回set中对应值为value的迭代器
(3)erase() size() clear()同上

string的常见用法详解

即用来储存字符串
用法都和上边的类似,不再赘述
下面介绍相关的函数实例
1.operator+=
这是string 的加法,可以将两个string直接拼接起来

#include<iostream>
#include<string>
using namespace std;
int main( )
{
	string str1="abc",str2="xyz",str3;
	str3=str1+str2;
	str1+=str2;
	cout<<str1<<endl;
	cout<<str3<<endl;
	return 0;
}

2.compare operator
两个string直接用==,!=,<,>等比较,比较规则是字典序
3.length(),size()
返回string的长度
4.Insert()
在string中insert()的用法有很多
(1)insert(pos,string),在pos号位置插入字符串string
(2)insert(it,it2,it3)
it为原字符串的欲插入位置,it2,it3为待插入字符串的首位迭代器,用来表示串[it2,it3)将被插入在it的位置上。
(3)substr()
substr(pos,len)返回从pos号位开始,长度为len的子串
(4)replace()
str.replace(pos,len,str2)把str从pos号位开始,长度为len的字串替换为str2。
str.replace(it1,it2,str2)把str的迭代器[it1,it2)范围内的字串替换为str2。

map的常用用法详解

map即理解为映射,比如在定义数组时,如int aeeay[100]其实时定义了一个从int 到int 的映射,所以我们就可以用map建立任何基本类型映射到任何基本类型。

PS:以上摘自《算法笔记》

发布了21 篇原创文章 · 获赞 1 · 访问量 313

猜你喜欢

转载自blog.csdn.net/qq_44722533/article/details/99443372