/
*最近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. isNaN() 函数用于检查其参数是否是非数字值。如果是非数字值则返回true

    isNaN() 函数用于检查其参数是否是非数字值.如果是非数字值则返回true.document.write(isNaN(0)); falsedocument.write(isNaN("He ...

  2. Python爬虫从入门到放弃(十)之 关于深度优先和广度优先

    网站的树结构 深度优先算法和实现 广度优先算法和实现 网站的树结构 通过伯乐在线网站为例子: 并且我们通过访问伯乐在线也是可以发现,我们从任何一个子页面其实都是可以返回到首页,所以当我们爬取页面的数据 ...

  3. CentOS下安装php的mbstring扩展

    php的mbstring扩展如果没有安装会导致一些问题: 例1:登陆phpMyAdmin的时候会提示没字符串编码和字符串处理库 php_mbstring,有些程序中会用到mb_substr函数没有ph ...

  4. Quartz使用-入门使用

    注:这里使用的是Quartz1.6.5版本(包:quartz-1.6.5.jar) //测试main函数 //QuartzTest.java package quartzPackage; import ...

  5. 解决发http get请求的时候不成功,出现android.os.NetworkOnMainThreadException的异常

    问题描述:在接游戏sdk的时候,由于游戏要求购买的时候是在主线程里面进行的,但是发http请求是不能在主线程里面发,否则就会出现android.os.NetworkOnMainThreadExcept ...

  6. JQuery实现点击关注和取消功能

    点赞,网络用语,表示“赞同”.“喜爱”. 该网络语来源于网络社区的“赞”功能.送出和收获的赞的多少.赞的给予偏好等,在某种程度能反映出你是怎样的人以及处于何种状态.点赞的背后,反映出你自己.与之对应的 ...

  7. java网络编程之socket(2)

    异步处理多客户端连接服务端 上篇讲到的是服务端接收一个客户端的请求之后就结束了,不能再接收其他客户端的请求了,实际情况上我们希望服务端能够处理来自不同用户的请求. 想到这里,或许我们可以用一个死循环, ...

  8. Java学习笔记之字符串常用方法

    一.String关键字一些常用方法 1.构造方法: public String(); 空构造 public String(byte[]  bytes);将字节数组转成字符串 public String ...

  9. MyBatis源码解析【3】生命周期

    经过之前的项目构建,我们已经得到了一个可以使用的最基本的项目. 其中已经包括整个执行的过程.但是我们在完成之后也遇到了很多问题,我们就要慢慢的一步步解决这些问题. 讲道理,今天我们其实应该直接开始看源 ...

  10. javascript编程代码笔记

    1. 快速排序算法 方法一 function quicksort(n,left,right){ var p; if(left<right){ p = position(n,left,right) ...