① . next_permutation       prev_permutation:可以按升序生成下一个字典序列。。。

例:

int shu[6]={1,2,3,4,5,6};
next_permutation(shu,shu+6)
shu[6]={1,2,3,4,6,5};
如果下一序列存在,此函数的return值为true;
如果shu[6]={6,5,4,3,2,1};下一序列不存在

则此函数的return 值为false;


例题:南阳oj 19题 擅长排列的小明

prev_permutation   的用法和next_permutation 的一样,,,他是求降序的。。。。。

② .  replace: 字符替换

string ch,chl="we";//定义string 类型 
ch.replace(ch.begin()+it,ch.begin()+it+3,chl.begin(),chl.end());
将ch 字符串中的ch[it]到ch[i+2]替换为 chl的begin()到chl的end(),也可以写成chl().begin()+2;;
string::size_type it;//定义it 为string类型的长度
it=ch.find("you");//查找下一个“you”出现的位置 。。

例题:南阳oj 113题 字符串替换


3.upper_bound

定义vector  <int>  shu

  lower_bound(shu.begin(), shu.end(),val)算法返回一个非递减序列shu中的第一个大于等于值val的位置。

shu.begin(), shu.end(),val)算法返回一个非递减序列shu中第一个大于val的位置。

   如 shu[]={ 1,2,3,4,5,6,6,6,7,7,7,7}

lower_bound(shu.begin(), shu.end(),6)=5;          (shu[5])

upper_bound(shu.begin(), shu.end(),val)=8;        (shu[8])


4.vector


vector <int> xiang[MA]; 建立vrctor 容器,名字是xiang[MA]
xiang[a].push_back(b); xiang[a] 最后添加元素b.
li=xiang[p].back();返回 xiang[p] 中的最后一个元素。
xiang[p].pop_back();删除 xiang[p] 中最后一个元素。
ve.insert(ve.begin()+llp,b); //是将b插入到ve[ llp ] 的前面。



memcpy(temp,ma,sizeof(ma)); 

把ma里面的东西复制到temp里面


实数转为字符串型:

char s[80];
double f = 1.2345;
sprintf(s,"%lf",f);


字符串ch---重读

 sscanf(ch,"%s%s",ch1,ch2);//重读