算法笔记学习记录(2)
c++标准模板库(STL)
(1)vector–变长数组
定义:vector name vector<vector> name
访问:1.像普通数组一样通过下标访问 2.通过迭代器访问,迭代器iterator可以理解为一种类似指针的东西,定义:vector::iterator it, 可以通过*it来访问vector里的元素。
vector常用函数:
1.push_back(x) :在vector后面添加一个元素x
2.pop_back():用于删除vector的尾元素
3.size():用来获取vector中元素的个数
4.clear():用来清空vector中的所有元素
5.insert(it,x):用来向任意迭代器it处插入一个元素x
6.erase(it):删除迭代器为it处的元素。 erase(first,last)删除【first,last)内的所有元素。这里要注意:外国人的思想中一般是左闭右开。
(2)set–一个内部自动有序且不含重复元素的集合
定义:set name
访问:set只能通过迭代器访问,除了vector和string外的STL容器都不支持*(it+i)的访问方式。
insert常用函数:
1.insert(x):将x插入到set中,并自动递增排序和去重。
2.find(value):返回set中对应值为value的迭代器。
3.erase(it),删除迭代器为it处的元素。 erase(value)删除值。 erase(first,last)删除【first,last)内的所有元素。
4.size():用来获取set中元素的个数
5.clear():用来清空set中的所有元素
(3)string–字符串
string初始化可直接赋值:
string str = “abcd”
访问:1.可以像字符数组那样去访问。如果要读入或输出整个字符串,只能使用cin和cout。 2.通过迭代器访问:string::iterator it。
string常用函数:
1.str1+=str2:将两个string直接拼起来
2.直接用符号比大小,规则是字典序
3.length()/size():字符串长度
4.insert(pos,string):在pos位置插入string。 insert(it,it2,it3):it为原字符串欲插入位置,it2,it3为待插入字符串的首尾迭代器。
5.erase(it):删除迭代器为it处的元素。 erase(first,last)删除【first,last)内的所有元素。
6.clear():用来清空string中的所有元素
7.substr(pos,len):返回从pos号位开始,长度为len的字串。
8.string::npos为find函数失配时返回的值
9.find(str2):当str2是str的字串时,返回在str中第一次出现的位置。如果不是,返回string::npos
10.replace(pos,len,str2):把str从pos号位开始,长度为len的字串替换为str2
(4)map–将任何基本类型映射到任何基本类型
定义:map<typename1,typename2> mp;
访问:1.通过下标访问 2.通过迭代器访问:map<typename1,typename2>::iterator it. 使用it->first访问键,it->second来访问值
注意:map会以键从小到大的顺序自动排序
map常用函数:
1.find(key):返回键为key的映射的迭代器
2.erase(it) erase(key):key为欲删除的映射的键 erase(first,last)
3.size():用来获取map中元素的个数
4.clear():用来清空map中的所有元素
(5)queue–队列,一个先进先出的容器
定义:queue name
访问:队列是一个先进先出的容器,所以只能通过front()来访问队首元素,或是通过back()来访问队尾元素
queue常用函数:
1.push(x):将x进行入队
2.front(),back()
3.pop():令队首元素出队
4.empty():检测是否为空,为空返回true
5.size():返回queue内的元素
(6)priority_queue–优先队列,队首元素一定是当前队列中优先级最高的元素。
(7)stack–后进先出的容器
定义:stack name
访问:只可使用top()函数访问栈顶
stack常用函数:
1.push(x)
2.top()
3.pop()
4.empty()
5.size()
(8)algorithm头文件下的常用函数
1.max(),min(),abs()
2.swap()
3.reverse(it,it2):将数组指针在[it,it2)之间的元素进行反转
4.sort()
5.cmp()函数:
bool cmp(int a, int b){
return a>b;
}
6.lower_bound(first, last, val):返回第一个值大于等于val的位置
upper_bound(first, last, val):第一个值大于val元素的位置