/
*最近ACM比赛,用到的时候忘记成员函数了,贼尴尬,给以后比赛做下准备
*/
LIST:
构造函数
   list<int> c0; //空链表
  list<int> c1(3); //建一个含三个默认值是0的元素的链表
  list<int> c2(5,2); //建一个含五个元素的链表,值都是2
  list<int> c4(c2); //建一个c2的copy链表
  list<int> c5(c1.begin(),c1.end()); ////c5含c1一个区域的元素[_First, _Last)。
成员函数
c.begin()      返回指向链表第一个元素的迭代器。
c.end()        返回指向链表最后一个元素之后的迭代器。
c.rbegin()      返回逆向链表的第一个元素,即c链表的最后一个数据。
c.rend()       返回逆向链表的最后一个元素的下一个位置,即c链表的第一个数据再往前的位置。
operator=      重载赋值运算符。
c.assign(n,num)   将n个num拷贝赋值给链表c。
c.assign(beg,end)  将[beg,end)区间的元素拷贝赋值给链表c。
c.back()        返回链表c的最后一个元素。
c.front()       返回链表c的第一个元素。
c.empty()         判断链表是否为空。
c.size()        返回链表c中实际元素的个数。
c.max_size()     返回链表c可能容纳的最大元素数量。
c.clear()       清除链表c中的所有元素。
c.insert(pos,num)        在pos位置插入元素num。
c.insert(pos,n,num)       在pos位置插入n个元素num。
c.insert(pos,beg,end)     在pos位置插入区间为[beg,end)的元素。
c.erase(pos)          删除pos位置的元素。
c.push_back(num)         在末尾增加一个元素。
c.pop_back()            删除末尾的元素。
c.push_front(num)        在开始位置增加一个元素。
c.pop_front()           删除第一个元素。
resize(n)     从新定义链表的长度,超出原始长度部分用0代替,小于原始部分删除。
resize(n,num)          从新定义链表的长度,超出原始长度部分用num代替。
c1.swap(c2);            将c1和c2交换。
swap(c1,c2);            同上。
c1.merge(c2)            合并2个有序的链表并使之有序,从新放到c1里,释放c2。
c1.merge(c2,comp)        合并2个有序的链表并使之按照自定义规则排序之后从新放到c1中,释放c2。
c1.splice(c1.beg,c2)           将c2连接在c1的beg位置,释放c2
c1.splice(c1.beg,c2,c2.beg)      将c2的beg位置的元素连接到c1的beg位置,并且在c2中施放掉beg位置的元素
c1.splice(c1.beg,c2,c2.beg,c2.end)   将c2的[beg,end)位置的元素连接到c1的beg位置并且释放c2的[beg,end)位置的元素
remove(num)      删除链表中匹配num的元素。
remove_if(comp)    删除条件满足的元素,参数为自定义的回调函数。
reverse()        反转链表
unique()         删除相邻的元素
c.sort()         将链表排序,默认升序
c.sort(comp)     自定义回调函数实现自定义排序
重载运算符
operator==
operator!=
operator<
operator<=
operator>
operator>=

set:
begin()    ,   返回set容器的第一个元素
end()      ,   返回set容器的最后一个元素
clear()    ,    删除set容器中的所有的元素
empty()    ,    判断set容器是否为空
max_size()   ,    返回set容器可能包含的元素最大个数
size()     ,    返回当前set容器中的元素个数
rbegin     ,   返回的值和end()相同
rend()     ,   返回的值和rbegin()相同
count()       用来查找set中某个某个键值出现的次数。这个函数在set并不	                  是很实用,因为一个键值在set只可能出现0或1次,这样就变了                                                                                     判断某一键值是否在set出现过了。
例子:cout<<"set 中 1 出现的次数是 :"<<s.count(1)<<endl;
erase(iterator)  ,  删除定位器iterator指向的值
erase(first,second) ,删除定位器first和second之间的值
erase(key_value),    删除键值key_value的值
find()  ,         返回给定值值得定位器,如果没找到则返回end()。
insert(key_value); key_value插入到set中 ,返回值是pair<set<int>::iterator,bool>,bool标志着插入是否成功,而iterator代表插入的位置,若key_value已经在set中,则iterator表示的key_value在set中的位置。
inset(first,second); 将定位器first到second之间的元素插入到set中,返回值是void.
lower_bound(key_value),返回第一个大于等于key_value的定位器
upper_bound(key_value),返回最后一个大于等于key_value的定位器

vector:
at() 返回指定位置的元素
back() 返回最末一个元素
end() 返回最末元素的迭代器(译注:实指向最末元素的下一个位置)
capacity() 返回vector所能容纳的元素数量(在不重新分配内存的情况下)
clear() 清空所有元素
empty() 判断Vector是否为空(返回true时为空)
erase() 删除指定元素
c.erase(beg,end)
front() 返回第一个元素
insert() 插入元素到Vector中
max_size() 返回Vector所能容纳元素的最大数量(上限)
pop_back() 移除最后一个元素
push_back() 在Vector最后添加一个元素
rbegin() 返回Vector尾部的逆迭代器
rend() 返回Vector起始的逆迭代器
reserve() 设置Vector最小的元素容纳数量
resize() 改变Vector元素数量的大小
size() 返回Vector元素数量的大小
swap() 交换两个Vector

Map:
map的功能
自动建立Key - value的对应。key 和 value可以是任意你需要的类型。
根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。
快速插入Key - Value 记录。
快速删除记录
根据Key 修改value记录。
遍历所有记录。
成员变量和成员函数
1. map最基本的构造函数;
   map<string , int >mapstring;         map<int ,string >mapint;
   map<sring, char>mapstring;         map< char ,string>mapchar;
   map<char ,int>mapchar;            map<int ,char >mapint;
2. map添加数据;
   map<int ,string> maplive;
   1.maplive.insert(pair<int,string>(102,"aclive"));
   2.maplive.insert(map<int,string>::value_type(321,"hai"));
   3, maplive[112]="April";//map中最简单最常用的插入添加!
3,map中元素的查找:
   find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。
   map<int ,string >::iterator l_it;;
   l_it=maplive.find(112);
   if(l_it==maplive.end())
                cout<<"we do not find 112"<<endl;
   else cout<<"wo find 112"<<endl;
4,map中元素的删除:
   如果删除112;
   map<int ,string >::iterator l_it;;
   l_it=maplive.find(112);
   if(l_it==maplive.end())
        cout<<"we do not find 112"<<endl;
   else  maplive.erase(l_it);  //delete 112;
5,map中 swap的用法:
  Map中的swap不是一个容器中的元素交换,而是两个容器交换;
  int main( )
  {
      map <int, int> m1, m2, m3;
      map <int, int>::iterator m1_Iter;
      m1.insert ( pair <int, int>  ( 1, 10 ) );
      m1.insert ( pair <int, int>  ( 2, 20 ) );
      m1.insert ( pair <int, int>  ( 3, 30 ) );
      m2.insert ( pair <int, int>  ( 10, 100 ) );
      m2.insert ( pair <int, int>  ( 20, 200 ) );
      m3.insert ( pair <int, int>  ( 30, 300 ) );
   cout << "The original map m1 is:";
   for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
      cout << " " << m1_Iter->second;
      cout   << "." << endl;
   // This is the member function version of swap
   //m2 is said to be the argument map; m1 the target map
   m1.swap( m2 );
   cout << "After swapping with m2, map m1 is:";
   for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
      cout << " " << m1_Iter -> second;
      cout  << "." << endl;
   cout << "After swapping with m2, map m2 is:";
   for ( m1_Iter = m2.begin( ); m1_Iter != m2.end( ); m1_Iter++ )
      cout << " " << m1_Iter -> second;
      cout  << "." << endl;
   // This is the specialized template version of swap
   swap( m1, m3 );
   cout << "After swapping with m3, map m1 is:";
   for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
      cout << " " << m1_Iter -> second;
      cout   << "." << endl;
}
6.map的sort问题:
  Map中的元素是自动按key升序排序,所以不能对map用sort函数:
7,   map的基本操作函数:
      C++ Maps是一种关联式容器,包含“关键字/值”对
      begin()         返回指向map头部的迭代器
      clear()        删除所有元素
      count()         返回指定元素出现的次数
      empty()        如果map为空则返回true
      end()           返回指向map末尾的迭代器
      erase()         删除一个元素
      find()           查找一个元素
      insert()        插入元素
      key_comp() 返回比较元素key的函数
      lower_bound()    返回键值>=给定元素的第一个位置
      max_size()    返回可以容纳的最大元素个数
      rbegin()        返回一个指向map尾部的逆向迭代器
      rend()           返回一个指向map头部的逆向迭代器
      size()            返回map中元素的个数
      swap()           交换两个map
      upper_bound()     返回键值>给定元素的第一个位置
      value_comp()       返回比较元素value的函数

  

C++STL(vector,map,set,list)成员函数整理的更多相关文章

  1. C++STL(vector,map,set,list,bitset,deque)成员函数整理

    补充: vector 删除指定元素: vec.erase(remove(vec.begin(), vec.end(), val),           vec.end());remove()返回的是删 ...

  2. 使用linux的GDB打印STL(vector,map,set..................)

    在linux用gdb或者cgdb计较不爽的地方是无法打印STL的东西,所有啊去网上找了找解决方案https://www.douban.com/note/182826844/?qq-pf-to=pcqq ...

  3. 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest A Email Aliases(模拟STL vector+map)

    Email AliasesCrawling in process... Crawling failed Time Limit:2000MS     Memory Limit:524288KB     ...

  4. Codeforces 731 C.Socks-并查集+STL(vector+map)

      C. Socks   time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  5. STL—vector空间的动态增长

    vector空间的动态增长     当添加元素时,如果vector空间大小不足,则会以原大小的两倍另外配置一块较大的新空间,然后将原空间内容拷贝过来,在新空间的内容末尾添加元素,并释放原空间.vect ...

  6. STL vector 内存释放

    最近在论坛看到一个提问帖子,问题是vector中存储了对象的指针,调用clear后这些指针如何删除? class Test { public: Test() {} ~Test() { cout < ...

  7. 【C++ STL】Map和Multimap

    1.结构 Map和multimap将key/value pair(键值/实值 队组)当作元素,进行管理.他们根据key的排序准则将元素排序.multimap允许重复元素,map不允许. 元素要求: k ...

  8. 【C++】朝花夕拾——STL vector

    STL之vector篇 N久之前是拿C的数组实现过vector中的一些简单功能,什么深拷贝.增删查找之类的,以为vector的实现也就是这样了,现在想想真是...too young too naive ...

  9. 【转】[STL]vector和deque的内存释放(clear)

    vector的clear成员函数可以清除vector中的元素,使其大小减至0.但它却不能减小vector占用的内存. [cpp] view plain copy int main() { vector ...

随机推荐

  1. 微信支付之统一下单--JAVA版

    都说微信支付有些坑,都抱怨微信支付的文档太烂,一会APPId,一会商户id,还有appsecret,支付API秘钥让你傻傻分不清楚,还有这里大写那里小写,几种标准,让你眼花缭乱.没错,这就是很多技术团 ...

  2. 一些爬虫中的snippet

    1.tornado 一个精简的异步爬虫(来自tornado的demo) #!/usr/bin/env python import time from datetime import timedelta ...

  3. Spring Boot 自动重启(spring-boot-devtools)

    原文 https://github.com/x113773/testall/issues/8 1. 首先添加依赖```<dependency><groupId>org.spri ...

  4. Bootstrap下拉菜单

    前面的话 网页交互的时候经常会需要上下文菜单或者隐藏/显示菜单项,Bootstrap默认提供了用于显示链接列表的可切换.有上下文的菜单.而且在各种交互状态下的菜单展示需要和javascript插件配合 ...

  5. JAVA基础——异常详解

    JAVA异常与异常处理详解 一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在java中,阻止当前方法或作用域的情况,称之为异常. java中异常的体系是怎么样的呢? 1 ...

  6. EBS系统启动&停止&增加表空间&替换首页图片

    EBS系统启动&停止&增加表空间&替换首页图片 数据库启动 使用oraprod账号登陆 [root@htdb data]# su oraprod [oraprod@htdb d ...

  7. 流行框架(angularj基础)

  8. Newtonsoft.Json输出JSON 时动态忽略属性

    一,前言 最近做项目采用Json形式和其他客户端交互,借助于Newtonsoft.Json . 由于业务场景不同,输出的Json内容也不同.要想忽略的属性,可以借助Newtonsoft.Json的特性 ...

  9. C#内置函数 RunSql的使用

    作用批量执行sql语句 表达式.RunSQL(SQLStatement,UseTransaction) 表达式.一个代表DoCmd对象的变量. 注释:sqlstatement参数的最大长度为 32,7 ...

  10. Adobe系列软件下载地址

    在前些上传的文章中已经讲了如何激活Adobe系列软件,在这放上Adobe系列软件下载地址: 1.Adobe After Effects 2017-14.0 32位下载地址: 链接:http://pan ...