1.string
(1)读入时,cin和getline区别
cin不会吃掉换行符,getline会吃掉,
getline工作机制为遇到换行符停止
所以会对输入区内残存的换行符十分敏感
建议全用cin就完事了
(2)构造函数
string strs
//生成空字符串
string s(str) //生成字符串str的复制品
string s(str, stridx) //将字符串str中始于stridx的部分作为构造函数的初值
string s(str, strbegin, strlen) //将字符串str中始于strbegin、长度为strlen的部分作为字符串初值
string s(num, c) //生成一个字符串,包含num个c字符
string s(strs, beg, end)//以区间[beg, end]内的字符作为字符串s的初值
(3)获取字符串长度
size() = length()
(4)比较
A.compare(a,b,B,c,d);A中的a开始的b个数 与 B中的c开始的d个数比较
相同,返回 0;>返回1;<,返回-1。
(5)交换
a.swap(b);
(6)插入
\在index位置插入count个字符ch
string str = “meihao”;
string sstr = str.insert(0,2,‘a’);
cout<<sstr<<endl; //aameihao
\index位置插入一个常量字符串
string str = “meihao”;
string sstr = str.insert(1,"");eihao
cout<<sstr<<endl; //m
\index位置插入常量字符串中的count个字符
string str = “meihao”;
string sstr = str.insert(1,“hello~”,3);
cout<<sstr<<endl; //mheleihao
\index位置插入常量string
string str = “meihao”;
string sstr = str.insert(1,str);
cout<<sstr<<endl; //mmeihaoeihao
\index位置插入常量str的从index_str
开始的count个字符
string str1 = “meihao”;
string str2 = “hello~”;
string sstr = str2.insert(6,str1,3,3);
cout<<sstr<<endl; //hello~hao
(7)替换
用str替换指定字符串从起始位置pos开始
长度为len的字符
s.replace(pos,len,str);
(8)截取
s1=s.substr(0,t);//从s的第0个元素开始,截取t个元素
s2=s.substr(t);//从第t个元素开始,截取到尾部
(9)查找
string s1,s2;
int pos,len; char c;
s1.find(s2);
// 返回值为s2第一次出现在s1的位置
// 若s2不是s1子串返回 string::npos
find_first_of() 函数
该函数的返回值是被搜索字符串的第 1 个字符第 1 次出现的下标(位置)。
若查找失败,则返回 npos。
find_last_of() 函数
该函数的返回值是被搜索字符串的最后 1 个字符的下标(位置)。
若查找失败,则返回 npos。
find_first_not_of()函数
在源字符串中搜索与指定字符(串)不相等的第 1 个字符;
find_last_not_of() 函数
在源字符串中搜索与指定字符(串)不相等的最后 1 个字符
2.vector数组
v.front(),v.back()(返回数组元素)
sort(vec.begin(), vec.end());//从小到大
sort(vec.rbegin(), vec.rend());//从大到小
v.push_back(x);
v.begin(),v,end()返回指针(迭代器)
v.insert(pos,elem);
//在pos位置插入一个elem元素的拷贝,返回新数据的位置。
v.insert(pos,n,elem);
//在pos位置插入n个elem数据,无返回值。
v.insert(pos,beg,end);
//在pos位置插入[beg,end)区间的数据,无返回值
v.erase(pos)
//删除元素
v.pop_back();
v.clear();
3.map
m.clear();
m[?]=?;
map<?,?>m;
4.set
set中各元素不同!!!
sets;
s.insert (x);
//遍历元素
set::iterator it;
for(it=s.begin ();it!=s.end ();it++)
printf("%d\n",*it);
//s.end()没有值
cout<<*s.begin ()<<endl;
//lower_bound()–返回指向大于(或等于)某值的第一个元素的迭代器
cout<<*s.lower_bound (3)<<endl;
//upper_bound()–返回大于某个值元素的迭代器
cout<<*s.upper_bound (3)<<endl;
//find()–返回一个指向被查找到元素的迭代器
cout<<*s.find (3)<<endl;
cout<<s.size()<<endl;
5.sort函数
(1)sort()
(2)stable_sort()
(3)partial_sort(first,first+n,last)//[first,last)
//first到last中最小的n个元素排序到最前面
6.二分查找
//函数的使用必须都只适用于已排序的序列
最后都可以加cmp函数来自定义排序
binary_search(beg,end,val)
返回一个bool变量,以二分法检索的方式在[beg,end]之间查找val,
找到返回true,找不到返回false。
lower_bound(beg,end,val)
返回一个迭代器,指向非递减序列[first, last)中的第一个大于等于(>=)val的位置。
upper_bound(beg,end,val)
返回一个迭代器,指向非递减序列[first, last)中的第一个大于 (>) val的位置。
equal_range(beg,end,val)
返回一个迭代器对(i,j),其中i是在不破坏次序的前提下,value可插入的第一个位置(>=亦即lower_bound),j则是在不破坏次序的前提下,value可插入的最后一个位置(>亦即upper_bound)因此,[i,j)内的每个元素都等同于value,而且[i,j)是[beg,end)之中符合此一性质的最大子区间
注:以上函数的复杂度,如果搭配随机存取迭代器,则为对数复杂度,否则为线性复杂度;
bool includes(beg,end,searchBeg,searchEnd)
返回一个bool变量,两种形式都用来判断有序序列[beg,end)是否包含另一个有序序列[searchBeg,searchEnd)的全部元素,也就是说对于[searchBeg,searchEnd)中的每一个元素,如果[beg,end)必有一个对应的相等元素,那么[searchBeg,searchEnd)肯定是[beg,end)的子集
a.fill(3.1415926);//群体赋值