C++的STL模板使用(机试冲呀!)

     如果能够使用STL模板,那写代码的速率真是up up up! 但是要记得如何使用,方法就是熟能生巧吧。这里做下总结,快速复习一下。

  1、vector

  • 头文件 #Include

vector可以理解成变长数组

  • 定义:vector name;  如 vector vi;  若为二维数组 vector vi[100];
  • 元素访问:1)通过下标  vi[index]    2)通过迭代器  vector::iterator it;
    vector::iterator it = vi.begin();
    for(i=0;i<5;i++)
    {
       print("%d ",*(it+i));
    }
    

    begin()是取vector首元素地址,end()是取尾元素的下一个地址(左闭右开)

for(vector::iterator it=vi.begin(); it!=vi.end();it++)  
 #注意是it!=vi.end()
{
    print("%d ",*it);    
}
  • vector函数

1) push_back()  在vector后面添加一个元素x(添加至末尾)

   v.push_back(x);

2)pop_back()  删除尾元素

3)size() 计算元素个数

4)clear() 清空

5)insert()  insert(it,x) 向vector迭代器it处添加一个元素

vi.insert(vi.begin()+2,-1)   #把-1插入vi[2]的位置

6) erase()   

erase(it) 删除迭代器为it的下标 

erase(first,last) 删除[first,last)内所有元素  vi.erase(vi.begin()+1,vi.begin()+4);

2、set  内部自动排序且不含重复元素

  • 定义 set name;
  • 元素访问:只能通过迭代器
  • 常用函数

1)insert(x)

2)find(x)  返回set中元素为x的迭代器

printf("%d\n",*(st.find(2));

3)erase()  

可结合find() s.erase(it);

3、string

  • 输入/输出  cin>>    cout<<

如果要printf()输出, printf(“%c",s.c_str());

  • 常用函数

1)+=  连接两个字符串

2)比较器>= <= != 按字典序排序

3)长度 size()/length()

4) insert()

insert(pos,str)  在字符串pos的位置插入字符串str

insert(it,it2,it3) it为原字符串想插入的位置,it2和it3为待插字符串的首尾迭代器

5)erase()

 erase(pos,str) 

6)substr(pos,len) 返回从pos号位开始,长度为len的子串

7)find()

find()没有找到 string::npos/-1

str.find(str2,pos) 从str2的pos处开始匹配,返回str2在str中第一次出现的位置

8)replace()

str.replace(pos,len,str2) 把str从pos号位开始,用长度为len的子串替换str2

str.replace(it1,it2,str2) 把str的迭代器[it1,it2)范围子串替换为str2

 

 

你可能感兴趣的:(算法刷题总结)