upper_bound(S, S+n, num) 非下降序列S,返回第一个大于num的值的指针 1 2 2 2 3
lower_bound,第一个大于等于num的值的指针 1 2 2 2 3
string A,B A.find(B) 返回B出现在A中位置 没有就返回-1
A.c_str() string转成c式字符数组 A.substr(0, 2) 临时一个string存A的前两个字符(A[0],A[1])(区间是前开后闭)
stringstream ss; ss.clear()神他妈清空状态,ss.str("")清空内容
scanf %c时读入任何字符包括空格tab回车 其他情况以这三个作为分隔
缓冲区: 空格233空格, scanf%d 第一个空格抛弃 写入233 第二个空格会留在缓冲区
gets读到回车结束,并且会把回车留在缓冲区
%*d空读,读了但是不写入: scanf( "%d %*c %d", &x, &y );
sscanf(char指针, “控制格式”, 写入的变量)把字符数组写入变量里,配合gets食用更加
数字和字符连续出现要读 scanf“%d%s”可破 (入坑时被%c骗了)
(1,2) (2,3) (3,4) 这样有任意空格的 scanf("空格(%d,%d)", ...)可破
set.insert(233)
set<int, mycmp>s mycmp可以是定义了排序规则的结构体 仿函数什么的
map<char, int, mycmp> map排序是排第一个东西
map<string,float>m; m["jack"]=98.0; m["mike"]=87.5; m["jane"]=100.0; m["babala"]=78.0; m.erase("jane");
map[] = 直接修改键值,会覆盖掉之前的(如果有)
mapStudent.insert(pair<int, string>(1, "student_one")); 插入pair 感觉好记,如果原来有键值就不会插入这个
mapStudent.insert(map<int, string>::value_type (1, "student_one")); 第二种插入
set.find()返回找到元素的迭代器 set.count() 返回元素的个数(当然是0/1)
queue priority_queue deque太常用...list bitset不常用...跳过了...
%o 八进制 %x 十六进制 输出%: %%