#基础编程#STL小结

vector

定义

vector<typename> name;
//注:vector<vecttor<int> > name;//>>之间要加空格

访问

  • 下标访问
    • 对一个定义为vector<typename> v 的容器,直接访问v[index] 即可
  • 迭代器
    • 定义
      vector<typename>::iterator it;
      
    • 用法
      int main()
      {
         vector<int> vi;
      	for(int i = 1; i <= 5; i++)
      		vi.push_back(i);
      	vector<int>::iterator it = vi.begin();
      	for(int i = 1; i <= 5; i++)
      		printf("%d ", *(it + i));
      	//另一种写法:
      	for(it = vi.begin(); i != vi.end(); it++)
      		printf("%d ", *it);
      }
      

常用函数

函数释义
push_back(x)在容器后面添加一个元素x
pop_back()删除vector的尾元素
size()获取元素个数(返回unsigned类型,但一般用%d不会出很大问题)
clear清空vector所有元素
insert(it, x)向vector的任意迭代器it处插入一个元素x
erase(it)删除it处元素
earse(first, last)删除[first, last)区间元素

set

定义

set<typename> name;

访问

  • 只能通过迭代器
    • 定义
      set<typename>::iterator it;
      
    • 用法
      • vectorstring外STL容器都不支持*(i+1)访问方式,因此只能按如下方式枚举
      • set内元素自动递增排序,且自动去除了重复元素
        int main()
        {
           set<int> st;
           st.insert(3);
           st.insert(5);
           st.insert(2);
           st.insert(3);
        	for(set<int>::iterator it = st.begin(); it != st.end(); it++)
        		printf("%d ", *it);//输出 2 3 5
        }
        

常用函数

函数释义
insert(x)将x插入set容器,并自动排序和去重
find(value)返回set中对应值的value迭代器
size()获取元素个数
clear清空set所有元素
erase(it)删除it处元素
earse(value)value为所需要删除元素的值

string

定义

string str;

访问

  • 下标访问
    int main()
    {
    	string str = "abcd";
    	for(int i = 0; i < str.length(); i++)
    		printf("%c", str[i]);
    		//printf("%s\n", str.c_str());//将string型str变为字符数组可以直接输出字符串
    }
    
  • 迭代器
    • 定义
      string::iterator it;
      
    • 用法
      int main()
      {
        string str = "abcd";
      	for(string::iterator it = str.begin(); it != vi.end(); it++)
      		printf("%c", *it);
      }
      

常用函数

函数释义
operator+=string的加法,可以将两个string直接拼接起来
compare operator直接使用==!=<<=>>=比较大小,比较规则为字典序
length()/size()获取string长度
insert(pos, string)在pos位置插入字符串string
insert(it, it2, it3)串[it2, it3)插在it位置上
substr(pos, len)返回从pos位开始,长度为len 的子串
clear清空string所有元素
erase(it)删除it处元素
earse(first, last)删除[first, last)区间元素
find(str2)当str2是str的子串时,返回其在str中第一次出现的位置,否则返回string::npos
find(str2, pos)从str的pos为开始匹配str2,返回值同上
replase(pos, len, str2)把str从pos位开始,长度为len
的子串替换为str2
replase(it1, it2, str2)把str的迭代器[it1, it2)范围的子串替换为str2

map

定义

map<typename1, typename2> mp;
//第一个是键的类型,第二个是值的类型
//如果是字符串到整型的映射,必须使用string而不能用char: map<string, int> mp;

访问

  • 下标访问
    • 即通过键的值来访问,例如一个map<char, int> mp 通过访问ma['c']即可访问它对应的整数
  • 迭代器
    • 定义
      map<typename1, typename2>::iterator it;
      //通过使用it->first访问键,通过it->second来访问值
      
    • 用法
      int main()
      {
         map<char, int> mp;
         mp['m'] = 20; mp['r'] = 30; mp['a'] = 40;
         for(map<char, int>::iterator it = mp.begin(); it != mp.end(); it++)
         	printf("%c %d\n", it->first, it->second);
      }
      

常用函数

函数释义
find(key)返回键为key的映射的迭代器
size()获取元素个数
clear清空map所有元素
erase(it)删除it处迭代器
earse(key)key为删除的映射的键
earse(first, last)删除[first, last)区间的值

queue

定义

queue<typename> name;

访问

  • 由于队列本身是一种先进先出的限制性数据结构,因此只能通过front()访问队首元素,或者通过back()访问队尾元素

常用函数

函数释义
push(x)将x入队
front(),back()获得队首、队尾元素
pop()令队首出队
empty()检测是否为空
size()获取元素个数

priority_queue

定义

priority_queue<typename> name;

访问

  • 只能通过top()函数来访问队首元素,也就是优先级最高的元素

常用函数

函数释义
push(x)将x入队
top()获得队首元素
pop()令队首出队
empty()检测是否为空
size()获取元素个数
  • 如果想让优先队列总是把最小的元素放在队首:
    • priority_queue<int, vector<int>, greater<int>>q

stack

定义

stack<typename> name;

访问

  • 只能通过top()来访问栈顶元素

常用函数

函数释义
push(x)将x入队
top()
pop()令队首出队
empty()检测是否为空
size()获取元素个数

algorithm下常用函数

函数释义
max()获取最大值
min()获取最小值
abs()获得绝对值
swap()交换x,y
reverse()将数组指针在[it1, it2)之间的元素或容器的迭代器在此范围内进行反转
fill()把数组或容器中某一段区间赋值为某个相同的值
sort()排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值