string
string s1初始化
string s1="value"赋值
cin 遇见空格停止读取要想读取一整个句子
string str;
getline(cin, str);
cout << str << endl;
set
set,set里面的元素是有序的且唯一的,只要你往set里添加元素,它就会自动排序,而且,如果你添加的元素set里面本来就存在,那么这次添加操作就不执行。要想用set先加个头文件set。
set 必须使用迭代器
set<int> num//定义set
num.insert(8)//插入
num.erase()//删除
例如
num.erase(8)
num.erase(num.find(100))//找到100并删除
num.size()//获取set中元素个数
输出
for(set<int>::iterator it=num.begin();it!=num.end();it++){
printf("%d\n", *it); //只输出200
}
map
#include<map>
#include<iostream>
#include<string>
using namespace std;
int main()
{
map<string, double> a;
a["aab"] = 12.6;//赋值
a["abc"] = 14.9;
a["aac"] = 16.6;
map<string, double>::iterator it;//迭代器
for (it = a.begin(); it != a.end(); it++)//遍历
cout << (*it).first << ' ' << (*it).second << endl;
a["aab"] = 18.8;//修改
a.erase("abc");//删除abc
it = a.find("aac");//搜索某个键。搜索到了的话返回迭代器的位置,搜索不到返回end()位置
cout << "******"<<(*it).second << endl;//输出对应的值
a.erase(it);
for (it = a.begin(); it != a.end(); it++)//遍历
cout << (*it).first << ' ' << (*it).second << endl;
}
queue队列 先进先出
queue入队,如例:q.push(x); 将x 接到队列的末端。
queue出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问queue队首元素,如例:q.front(),即最早被压入队列的元素。
访问queue队尾元素,如例:q.back(),即最后被压入队列的元素。
判断queue队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()
二分
lower_bound(起始地址,结束地址,要查找的数值) 返回的是数值 第一个 出现的位置。
upper_bound(起始地址,结束地址,要查找的数值) 返回的是 第一个大于待查找数值 出现的位置。
binary_search(起始地址,结束地址,要查找的数值) 返回的是是否存在这么一个数,是一个bool值。
如果所有元素都小于val,则返回last的位置,且last的位置是越界的!
int main()
{
for (int i = 0; i <= 7; i ++) n[i] = i*2;
int a = upper_bound(n, n + 8, 12)-n;//>12
cout << a<<" "<<n[a]<<endl;
int b = lower_bound(n, n + 8, 5) - n;//>=5
cout << b << " " << n[b];
return 0;
}
vector 不定长数组可以很好解决数组不知道长度的问题,节约空间
v.push_back() 在最后面加入元素
v.empty() 判断是否为空
v.back()返回最后一个元素
v.front()返回第一个元素
v[i] 返回第i个元素
v.size() 返回元素个数
void Cal_GCD1(int a, int b)
{
if(b == 0) //如果除数b等于0,不可以再继续进行辗转相除,此时的a就是最大公约数
return a;
else
return Cal_GCD1(b, a % b);
}