STL中的一些操作

来源:互联网 发布:centos php exec 权限 编辑:程序博客网 时间:2024/05/18 20:51

① . 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. lower_bound 和 upper_bound

定义vector  <int>  shu

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

    upper_bound(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);//重读



0 0