STL常用容器及其用法

#include <array>
/*
array是固定大小的顺序容器
*/
std::array<int,5> myarray = {2, 16, 77, 34, 50};
myarray.begin();       //迭代器
myarray.end();
myarray.rbegin();      //返回指向数组容器中最后一个元素的反向迭代器
myarray.rend();        //返回指向数组容器中第一个元素的反向迭代器
myarray.size();       //返回容器中元素的数量
myarray.max_size();   //返回容器可容纳的最大元素数
myarray.empty();      //判断容器是否为空
myarray.front();      //引用
myarray.back();
myarray.data();       //返回数组对象中第一个元素的指针
myarray.fill(val);    //用val填充数组所有元素
myarray.swap();       //交换数组中的内容
myarray.at(i);        //返回数组中第n个位置的元素的引用。at会检查数组边界并通过抛出一个outofrange异常来判断n是否超出范围。





#include <vector>
/*
vector是表示可以改变大小的数组的序列容器
vector各种常见操作的复杂度如下:
随机访问:常数O(1)
在尾部增删元素:平摊常数O(1)
增删元素:O(n)
*/
std::vector<int> first(4, 100);
std::vector<int> second(first.begin(),first.end());
std::vector<int> myints;
myints.size();
myints.push_back();      //在vector的最后一个元素之后添加一个新元素
myints.pop_back();       //删除vector中的最后一个元素
myints.resize();
myints.capacity();       //返回当前为vector分配的存储空间大小,用元素表示
myints.reserve();        //请求vector容量至少足以包含n个元素
myints.insert(it, 2, 10);         //通过在指定位置的元素之前插入新元素来扩展vector
myints.erase();          //从vector中删除单个元素(position)或一系列元素([first,last))
myints.clear();          //从vector中删除所有的元素,留下size为0的容器
myints.emplace(it+1, 200); //通过在position位置处插入新元素args来扩展容器




#include <string>
std::string<char> mystring;
mystring.substr(0,5);         //求子串, 从0开始,长度为5的子串
mystring.append();            //在字符串结尾添加字符
mystring.replace(5,1,“qqq”); //(pos,len,str)
mystring.replace(it1,it2,"qqq");   //(iterator1,iterator2,string)


#include <stack>
std::stack<int> mystack;
mystack.push(1);
mystack.top();
mystack.pop();



#include<queue>
std::queue<int> myquque;
myqueue.push(1);
myqueue.front();
myqueue.back();
myqueue.pop();


#include <deque>
/*
双端队列,是具有动态大小的序列容器,可以在两端扩展或收缩
*/
std::deque<int> mydeque;
mydeque.push_back();
mydeque.push_front();    //在deque容器的开始位置插入一个新的元素
mydeque.pop_back();
mydeque.pop_front();
mydeque.emplace_front();
mydeque.emplace_back();




#include <forward_list>
/*
单向链表,是序列容器,允许在序列中的任何地方进行恒定的时间插入和擦除操作
*/
std::forward_list<int> mylist = {20, 30, 40};
mylist.before_begin()        //返回指向容器中第一个元素之前的位置的迭代器





#include <map>
/*
关联容器,按照特定顺序存储由key value和mapped value组成的元素
*/
std::map<char,int> mymap;
mymap['a'] = 10;
mymap.begin();
mymap.key_comp();           //返回容器用于比较键的比较对象的副本
mymap.find(k);              //在容器中搜索具有等于k的键的元素,若找到返回一个迭代器,否则返回map::end的迭代器
mymap.count(k);             //在容器中搜索具有等于k的键的元素
mymap.lower_bound();        //将迭代器返回到下限
mymap.upper_bound();        //将迭代器返回到上限





#include <pair>
/*
将一对值结合在一起。每个值可以被first,second访问
*/
std::pair<string,double> mypair;
mypair.first();
mypair.second();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值