常用函数和STL
一.常用函数
#include?<stdio.h>
int getchar(void);//读取一个字符,?一般用来去掉无用字符
char gets(charstr);//读取一行字符串
#include?<stdlib.h>
voidmalloc(size_t size);//动态内存分配,?开辟大小为?size?的空间
void qsort(voidbuf,size_t num,size_t size,int(compare)(const void,const void*));//快速排序
Sample:
int compare_ints(const voida,const voidb)
{
int arg1=(int)a;intarg2=(int)b;
if(*arg1<*arg2)return -1;
else if(*arg1==*arg2)return?0;
else return 1;
}
int array[]={-2,99,0,-743,2,3,4};intarray_size=7;
qsort(array,array_size,sizeof(int),compare_ints);
#include?<math.h>
//求反正弦,?arg∈[-1,?1],?返回值∈[-pi/2,?+pi/2]
double asin(double arg);
//求正弦,?arg为弧度,?弧度=角度*Pi/180.0,?返回值∈[-1,?1]
double sin(double arg);
//求e的arg次方
double exp(double arg);
//求num的对数,?基数为e
double log(double num);
//求num的根
double sqrt(double num);
//求base的exp次方
double pow(double base,double exp);
#include?<string.h>
//初始化内存,?常用来初始化数组
voidmemset(voidbuffer,int ch,size_t count);
memset(the_array,0,sizeof(the_array));
//printf是它的变形,?常用来将数据格式化为字符串
int sprintf(charbuffer,const charformat,…);
sprintf(s,"%d%d",123,4567);//s=“1234567”
//scanf是它的变形,?常用来从字符串中提取数据
int sscanf(const charbuffer,const charformat,…);
Sample:
char result[100]=“24?hello”,str[100];int num;
sprintf(result,"%d?%s",num,str);//num=24;str=“hello”?;
//字符串比较,?返回值<0代表str1<str2,?=0代表str1=str2,?>0代表str1>str2
int strcmp(const charstr1,const charstr2);
二.常用STL
[标准container概要]
vector 大小可变的向量, 类似数组的用法, 容易实现删除
list 双向链表
queue 队列, empty(), front(), pop(), push()
stack 栈, empty(), top(), pop(), push()
priority_queue 优先队列, empty(), top(), pop(), push()
set 集合
map<key,val> 关联数组, 常用来作hash映射
[标准algorithm摘录]
for_each() 对每一个元素都唤起(调用)一个函数
find() 查找第一个能与引数匹配的元素
replace() 用新的值替换元素, O(N)
copy() 复制(拷贝)元素, O(N)
remove() 移除元素
reverse() 倒置元素
sort() 排序, O(N log(N))
partial_sort() 部分排序
binary_search() 二分查找
merge() 合并有序的序列, O(N)
[C++ String摘录]
copy() 从别的字符串拷贝
empty() 判断字符串是否为空
erase() 从字符串移除元素
find() 查找元素
insert() 插入元素
length() 字符串长度
replace() 替换元素
substr() 取子字符串
swap() 交换字符串