-
全排列函数
next_permutation函数,其函数原型为:#include < algorithm >
bool next_permutation(iterator start,iterator end)
返回值:当当前序列不存在下一个排列时,函数返回false,否则返回true
作用: next_permutation(num,num+n)函数是对数组num中的前n个元素进行全排列,同时并改变num数组的值。
注意: next_permutation在使用前需要对欲排列数组按升序排序,否则只能找出该序列之后的全排列数 -
从字符串中提取子串
substr函数,其函数原型为:#include< cstring>
string substr(pos, len)
形参含义:pos子串起始位置,len子串长度
返回值:返回子串
注意:这个函数会遍历整个字符串,耗费时间,如果用在循环内部相当于多了一重循环,可能造成超时。 -
字符串转换为整数
atoi函数,函数原型为:#include< cstdlib>
int atoi(const char *p)
int atoi(str.c_str())
形参含义:str为需要转换的字符串
返回值:返回整数 -
字符串流结合getline函数分解字符串
模板
#include< sstream>
getline(cin, s); //从屏幕按行读入到字符串s中
istringstream is(s); //创建字符串输入流对象is, 并初始化为s
string temp;
while(getline(is, temp, ’ ') //从is中以‘ ’为分隔符读入到tmep中
{
}
-
c_str函数
函数原型:
#include< string>
const char *str.c_str()
函数功能:把一个string类型的str转换为C语言类型的字符数组静态指针
注意:此处为静态指针,不能直接赋值给char * -
C++中运算符重载
用途:一般用于对定义的两个结构体元素进行比较
法则:重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。
函数原型:
返回类型 operator需要重载的符号 (const 形参类型&) { } -
vector数组去重函数
arry.erase(unique(arry.begin(), arry.end()), arry.end());
unique()函数对[形参1,形参2)范围的元素进行去重(注:区间是前闭后开,即不包含形参2所指的元素),返回值是一个迭代器,它指向的是去重后容器中不重复序列的最后一个元素的下一个元素。
unique()函数可以去除数组中相邻重复项。例如:
输入数组 a[]={1,2,3,4,4,5,6,6,6,7,8,6,7,8}。
输出数组 a[]={1,2,3,4,5,6,7,8,6,6,7,8}。 -
sscanf()函数
用途:从一个字符串中读入指定格式的数据
函数原型:int sscanf(const char *str, const char *format, &……);
返回值:成功读入的数据个数