zoukankan      html  css  js  c++  java
  • C++ Primer笔记 容器和算法(2)

    erase 删除后  返回的是删除元素的后一个迭代器位置
    int main()
    {
    	//怎样正确的删除全部元素 循环
    	int a[]={1,2,3,4,5,6,7,8,9};
    	vector<int> v(a,a+6);
    	for(vector<int>::iterator it=v.begin();it!=v.end();)
    	{
    		it=v.erase(it);
    	}
    	for(vector<int>::iterator it=v.begin();it!=v.end();it++)
    	{
    		cout<<*it<<endl;
    	}
    	cout<<v.size()<<endl;
    	getchar();
    	return 0;
    }




    重置元素和交换元素


    c.swap(c2)


    c.assign(b,e)


    c.assign(n,t)  (迭代器不能是指向c的)


    容器能够自己主动增长


    像vector这样的增长代价比list要大


    capacity()和reserve()


    通常会预留比size大的空间,当不得不又一次分配内存时候,会加倍当前容量的分配策略
    也能够手动reserve(size) 分配


    deque能够随机訪问


    String s4(s3.begin(),s3.end())

    适配器

     

    1.       Stack<int> stack(deq)‘

    Stack,queue都基于deque实现

    2.       Priority_queue 基于vector实现

    s.empty()

    s.size()

    s.pop()

    s.top()

    s.push(item)

    队列

    q.empty()

    q.size()

    q.pop()

    q.front()

    q.back()

    q.top()

    q.push()

    关联容器

     

    Map与set

     

    Map:key-value

    Set:一个key

    Multimap:同一个键多次出现的map类型

    Multiset:同一个键多次出现的set类型

     

    1.Pair 类型

    创建与初始化:  pair<string,string> p;

    p.first 第一个元素  p.second 第二个元素

    又一次生成:  pair<string,string>next;

                          Next=make_pair(first,last);

    也支持直接赋值

                    Next.first=xx.   Next.second=xx;

    2.关联容器:

    2.1 map

    Map<ISBN,sales> bookstore;

    Map<k,v>::key_type , mapped_type,value_type(pair类型)

  • 相关阅读:
    LeetCode_21.合并两个有序链表
    LeetCode_70.爬楼梯
    LeetCode_001.两数之和
    LeetCode_509.斐波那契数
    Eclipse(2019-03版本)汉化
    修改Gradle本地仓库
    解决Eclipse导入Gradle项目时在 Building gradle project info 一直卡住
    Eclipse设置字体大小
    @Transactional spring 事务(转载)
    @Transactional spring 事务失效(转载)
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7371372.html
Copyright © 2011-2022 走看看