C C Utility Functions - swchen1234/Algorithm GitHub Wiki
String Operation
string -> integer
int stoi(string)
integer to string
string to_string(int) string to_string(double)
char to integer
int a = "4" - "0";
char to ascii
int("a")
Tokenization
std::vector<std::string> split(const std::string& s, char delimiter)
{
std::vector<std::string> tokens;
std::string token;
std::istringstream tokenStream(s);
while (std::getline(tokenStream, token, delimiter))
{
tokens.push_back(token);
}
return tokens;
}
Lower_bound and Upper_bound
lower_bound return the first element >= val; upper_bound return the first element > val.
C++ 11/14
使用auto需要注意以下几点:
1.auto变量必须在声明的时候对它进行初始化,在编译期编译器要根据初始表达式来推导auto的实际类型,因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量实际的类型。
2.auto不能做函数的形参
3.auto不能定义类的非静态成员变量
4. 不能用auto来声明数组
5.不能用auto来实例化模板
6.对于具有const属性的变量,auto可以带不过来这个属性(如:const int a=10; auto b=a;)b不具备a的const属性
7.对于valatile修饰的变量,auto可以带走这个属性
8.想要用auto在一行同时声明多个变量,这些变量必须具有相同类型,否则编译器会报错
decltype可以用来推导函数的返回类型: 1. 如果没有带参数,推导函数的类型 2.如果带参数列表,推导的是函数返回值的类型
decltype推导的四个规则
1.单个标记符表达式和类成员访问符,推导为本类型
2.将亡值,推导为类的引用
3.左值,推导为类型的引用
4.以上都不是,推导为本类型
捕捉列表描述了上下文中那些数据可以被lambda使用,以及使用的方式传值还是传引用。 捕捉列表有以下形式: [var]:表示值传递方式捕捉变量var [=]:表示值传递方式捕获所有父作用域中的变量(包括this) [&var]:表示引用传递捕捉变量var [&]:表示引用传递捕捉所有父作用域中的变量(包括this) [this]:表示值传递方式捕捉当前的this指针 注意:这里的父作用域指包含lambda函数的语句块
语法上捕捉列表可由多个捕捉项组成,并以逗号分割。比如: [=, &a, &b]:以引用传递的方式捕捉变量a和b,值传递方式捕捉其他所有变量 [&,a, this]:值传递方式捕捉变量a和this,引用方式捕捉其他变量 注意:捕捉列表不运行变量重复传递,否则就会导致编译错误。 [=, a]:=已经以值传递方式捕捉了所有变量,捕捉a重复