NEFU 字符串string

基本知识

1、string 的访问

cin>>str;
cout<<str<<endl;
printf("%s\n",str.c_str()); 用 printf 语句输出时不太一样

2、 string 的运算

字符串可以做“加法”运算。加法是把两个字符串直接拼接起来。
字符串还可以做“关系”运算,是按照字典序比较两个string 类型的大小。

3、 string 的常用函数

(1)length()和size()
length()用来返回 string 的长度(字符个数),时间复杂度为O(1)。size()与 length()一样。

(2)clear()
clear()用来清空 string 中的所有元素,时间复杂度为O (1)。

(3)substr()
Substr(pos,len)返回从 pos 号位置开始、长度为 len 的子串,时间复杂度为O (n)。

(4)insert ()
函数 insert ()有多种写法,时间复杂度都是O (n)。insert(pos,string),表示在pos号位置插入字符串string。insert(it,it2,it3),it为原字符串的欲插入位置,it2和it3为待插入字符串的首尾迭代器(左闭右开区间)。

(5)erase()
erase()可以删除单个元素,也可以删除一个区间内的所有元素,时间复杂度均为O (n)。删除单个元素用erase(it),it为要删除的元素的迭代器。删除一个区间内的所有元素可以用两种方法。erase(first,last),first为区间的起始迭代器,last为区间的末尾迭代器的下一个地址,也就是左闭右开的区间[first,last)erase(pos,length),pos为需要删除的字符串起始位置,length为要删除的字符个数。

(6)find()
str.find(str2),当str2是str的子串时,返回其在str中第一次出现的位置;否则返回string::npos。string::npos是一个常数,其本身的值等于-1,但由于是unsigned int类型,因此,也可以认为是unsigned int类型的最大值(4294967295)。str.find(str2,pos),是从str的pos号位开始匹配str2,返回值同str.find(str2)。以上两种写法的时间复杂度都是O(n*m),其中n和m分别为str和str2的长度。

(7)replace()
str.replace(pos,len,str2)表示把str从pos号位开始、长度为len的子串替换为str2。也可以写成str.replace(it1,it2,str2),表示把str的迭代器it1~it2范围内(左闭右开区间)的子串替换为str2。时间复杂度都是O(str.length)。时间复杂度都是O(str.length)。

零碎东西

1、max()、min()、abs()和 swap()
max(x,y)和min(x,y)分别返回 x 和 y 中的较大值和较小值,且参数必须是两个,可以是浮点数。如果要返回 3 个 数 x、y、z 的最大值,可以使用max(x,max(y,z))的方法。abs(x)是返回 x 的绝对值,x 必须是整数。如果要求浮点数的绝对值,可以使用 math 头文件下的 fabs(x)。
swap(x,y)用来交换 x 和 y 的值

2、 reverse()
reverse(it,it2)可以将数组指针在 it~it2 之间的元素,或容器的迭代器在 it~it2 范围内的所有元素进行反转。注意:it~it2 是左闭右开区间

3、 next_permutation()
next_permutation()是求出一个序列在全排列中的下一个序列。
例如,n=3 的全排列为:123,132,213,231,312,321,所以 231 的下一个排列就是 312。

4.、fill () 和memset的区别
fill ()可以把数组或容器的某一段区间赋为某个相同的值。和 memset 不同,这里的赋值可以是数组类型对应范围中的任意值。

例题

猜你喜欢

转载自blog.csdn.net/qq_46126537/article/details/104412117