2021.3.13
string
1. 字符串 。避免与与<string.h>搞混。多用于对数组成员赋初值0,memset(a,0,sizeof())
2. 字符串的定义,初始化。
(1) string a;
(2) string b=“c++”;
(3) string b(a);
(4) string b(“c++”);
(5) string a[282];
3.常识
(1)字符串a ,其a就是初始地址,也就是&a【0】(与字符数组同理);也就是a. begin()。
(2)可以通过下标方式进行访问,如a[0],a[1]。
(3)字符串每一个元素都是一个字符。如string a=“postive” ; a[3]==‘t’;
(4) 字符串可以进行 加 如string b=“man”;
a=a+b;b=b+a;
(5) 注意只能vector和string是可以对迭代器进行加减,string::iterator it=a.begin(); *(it+1);
(6) 两个字符串是可以相互直接赋值的。(字符数组只能用strcpy,和strcat)
4.常用使用方法
(1) a. size()判断a的长度,返回数字。
(2) b=a. substr(x,y);x是下标,y是长度。
(3) a. find(b)从a中找到b第一次出现的位置并返回。a. find(b,7)从第7个开始(包括7)从后找b。
stack(目前使用较少)
1.栈先进后出
2. 简单操作
(1)stacks;
头文件#include
(2)
a. empty()判断是否为空,注意,,,空的时候返回的是1。
(3) a. size()返回个数。
(4)a. push(i1)将i1放到栈顶。
(5) a. top()取出栈顶的第一个元素。
(6) a. pop()删除栈顶元素。
(7) a. clear()清空栈
queue(初学者使用较少)
1. 队列先进先出。就好比排队一般。
2. 除了a.top()不能用之外,其他操作与栈类似。a. front()取出队头元素。a. rear()取出队尾元素。
vector—stl(容器)之一
1.使用方法
1.#include a;
2.#include a[283];
2.操作
(1)a. push_back(i1);注意放入队尾
(2) a. empty();
(3) a. pop_back()弹出队尾元素
(4) vector 可以看做数组进行操作。a【0】;
(5) a. size();
(6) a. insert(a.begin(),6)在开始位置插入6,后面元素以此后退。
(7)a. clear();清空元素。
sort
1.sort(x,y)x是需要排序的首地址,y是需要排序的最后一个元素的后面一个地址。例如
排序a[2]到a[10],sort(a+2,a+10+1);
2. sort函数默认是从小到大排序但是构建一个函数定义符合自己的需求的函数来改变函数操作。例如bool cmp(int a,int b){return a>b}就是降序排列。sort(x,y,cmp)
3. 注意在低版本中不需要使用头文件就可以使用,但当提交时需要写上#include
unique
1. 相邻去重。可以先用sort排一下序,相同元素就可以相邻了。
2.与sort相同,区间是前闭后开。
3. 并不是删除元素,而是将最后将相同元素放到后面,
4.返回的是排序完成的最后一个位置。
set
常识
(1)默认是从小到大,但是可以自己构建一个数据类型特殊排序。
(2)元素不重复。
使用
(1) s. inset();s. erase()迭代器和元素值两种方式。s. clear()
(2) s. lower_bound(i1)返回大于等于i1的第一个元素的位置
s. upper_bound(i1) 返回大于i1的第一个元素的位置。
(3)s. coumt(i1)返回i1的个数
(4) multiset可以允许有相同元素出现。
map(使用最为频繁)
使用
- map<sting,int> it;
2.map的下标是按字典顺序排列,
3.map是可以通过下标直接访问。a=it[“ldjdj”];
4.a. size()返回的是映射数量的值。
贪心算法
1.定义。
将问题拆分为子问题,然后求解子问题的最优解,然后回溯到整体即可得到最优解。如果子问题的解不是最优解的话,那整个问题也就不是最优解。
2.步骤
(1)判断是否可以用贪心做
(2)分析如何用贪心。
3.例题
未完待续,关注收藏。