C/C++语法基础


1.初始化

//数组
int a[10]={1}//第一个元素是1,其余全是0
int a[]={1,2,3,4,5}//可以不指定初始长度
int a[2][5]={{1,2,3,4,5},{6,7,8,9,10}}//初始化二维数组
int *a = (int*)malloc(sizeof(int)*10)//动态分配空间
int *a = new int(10)//动态分配空间
//vector容器(动态数组)
vector a(10)//定义十个整型元素向量
vector a(10,1)//十个整型赋初值1
vector a; a.assign(10,1)//十个整型赋初值1
vector a(b)//b复制给a
vector a(b,b+3)//b数组中0~2个元素复制给a
vector a(b.begin(),b.begin()+3)//b向量中0~2个元素复制给a

vector> vec(N,vector(M,value))
//N行M列初值为value的二维向量
//string字符串
string str = "hello"
string str("hello")
string str = str0
string str(str0)
string str(10,'h')//str="hhhhhhhhhh"
string str = string(10,'h')
string str(str0,6)//str0从第6个字符开始拷贝
string str(str0,0,5)//str0拷贝0~5个字符

2.容器/数据结构用法

//vector容器
vec.push_back(elem)//尾部加入元素
vec.pop_back()//删除最后一格元素
vec.front()//返回第一个元素
vec.back()//返回最后一格元素
vec.size()//返回元素个数
vec.empty()//判断容器是否为空
vec[i]//返回第i个元素当且仅当其存在
//list容器类似
//map、unordered_map
map m//(键,值)
m[],mymap.at()//查询对应键的值
m.insert(pair(1,2))//插入对
m[key] = value//插入对(可覆盖)
m.erase()//通过key或迭代器删除

//string字符串
str.size()//获取长度
str[i],str.at(i)//返回指定位置字符
str.insert()//插入
str.replace()//替换
str.append(4,'h')//str尾部插入"hhhh"
str.append(str0) // str尾部插入str0
str.append(str0,4,6)//将str0第4个元素开始的6个字符插入str尾部
str.assign()//赋值
str.erase()//删除
str.substr()//切片
str.compare()//比较
str.find(str0)//匹配子串,返回位置
//stack、queue
push()//向队尾插入元素
pop()//删除队首元素
//set
insert()//向集合插入元素
//deque(双端队列)
push_back()// 向队尾插入元素
pop_back()//删除队尾元素
push_front()//向队首插入元素
pop_front()//删除队首元素