展会信息

C++ STL基本容器使用 - evilsnake

作者:admin 2019-01-16 我要评论

...

1:关系容器和挨次容器

  C中有两同典型的容器。:挨次容器和互插容器,挨次容器首要是:vector、list、Deque等。。航向表现一陆续的内存地址。,鉴于障碍物的造成,列表表现不陆续的内存。,鉴于链表的造成。德克与航向比拟。,但为概要的e的取代和拔出布置双向遭受。。互插的容器首要是熭和设置。。比对是键详细说明的模型。,SET是一单一的值。。MAP和SET无遮蔽地储藏处无遮蔽地的键详细说明。,MultIMAP和MultSeT可以储藏处多个同上的键详细说明。。

多宝平台官网网址自动化机器或设备专心致志和履行内存,本人用不着新的和取代调整。。

2:挨次容器引见

1)带菌者,克制头文章包罗

首要调整是

//1。精确地解释与设定初值
     vector<int> vec1;    //默许设定初值,VEC1是空的。
     vector<int> vec2(vec1);  //应用VEC1设定初值VEC2
     vector<int> vec3((),());//应用VEC1设定初值VEC2
     vector<int> vec4(10);    //10值为0的元素
     vector<int> vec5(10,4);  //10值为4的元素
  
     //2。经用调整办法
     (100);            //向牛臀肉添加元素int size = ();         //元素总计bool isEmpty = ();    //判别设想为空
     cout<0]<//获取概要的元素
     ((),5,3);    //从驻扎军队拔出5个元素,值为3。
     ();              //取代最近的一元素
     ((),()+2);//取代VEC1〔0〕- VEC1〔2〕暗射中靶子元素,克服VEC1〔2〕,安心元素提前地推动。
    cout<<(vec1==vec2)?true:false;  //判别同样的人设想同样的人、!=、>=、<=...
     vector<int>::iterator iter = ();    //获取迭代器的概要的地址
    vector<int>::const_iterator c_iter = ();   //获取const典型迭代器
    ();                 //清空元素
  
     //三。遍历
     //下标法int length = ();
     for(int i=0;i)
     {
        cout<<vec1[i];
     }
     cout<endl;
     //迭代器法
    vector<int>::iterator iter = ();
     for(;iter != ();iter++)
     {
        cout<<*iter;
     }

2)名单,列表是由STL造成的双向链表。,带菌者带菌者比拟,它容许短时期做成的拔出和取代。,已经随机号召是迟缓的。,您必要添加克制头文章在内的文章。

首要的调整

//1。精确地解释与设定初值
    list<int> lst1;          //创立空列表
    list<int> lst2(3);       //用三个元素创立列表
    list<int> lst3(3,2); //用三个元素创立2的列表
    list<int> lst4(lst2);    //应用LST2设定初值LST4
    list<int> lst5((),());  //同lst4
 
    //2。经用调整办法
    ((),());  //分派值,3值为0的元素
    (10);                    //末了加值
    ();                   //取代最近的一值
    ();                      //汇成概要的值的迭代器
    ();                            //汇成牛臀肉值的迭代器
    ();                      //清算估价bool isEmpty1 = ();          //空的的判别
    ((),());                        //取代元素
    ();                      //汇成概要的元素的援用。
    ();                       //汇成对最近的一元素的援用。
    ((),3,2);         //从详细说明的驻扎军队拔出3个值为2的元素。
    ();                         //汇成概要的元素的前向指导原则。
    (2);                        //取代自己人同上的元素。
    ();                        //继承权
    ();                       //输入元素总计
    ();                       //排序
    ();                         //取代使结合反复元素
 
    //三。遍历
    //迭代器法for(列表)<int>::const_iterator iter = ();iter != ();iter++)
    {
       cout<<*iter;
    }

3):德克
deque多宝平台官网网址与vector近似,遭受随机接入和短时期做成的拔出和取代,与带菌者意见分歧,Deque还遭受从开端拔出材料。:push_front。等等的人或物近似于带菌者运算办法的应用。

3:社团容器

1)比对的引入

  C MAP容器布置了一键详细说明对(key /value)容器。,map与multimap差数无遮蔽地位于multimap容许一键对应多个值。克制头文章包罗。迭代器,可以修正现实值。,无法修正主要的。。比对将如键自动化机器或设备排序。

罕见调整如次:

//1。精确地解释与设定初值
    map<int,string> MAP1                  //空map
   
    //2。经用调整办法
    MAP13] = "Saniya";                    //添加元素
    (比对<int,string>::value_type(2,"Diyabi"));//拔出元素
    //(对)(1,"Siqinsini"));
    (make_pair<int,string>(4,"V5"));
    string str = MAP13];                  //从主要的获取值,主要的不克不及修正。
    map<int,string>::iterator iter_map = ();//获取迭代器的概要的地址int key = iter_map->first;             //诡计keystring value = iter_map->second;       //诡计value
    (iter_map);                  //取代迭代器材料
    (3);                         //按保留字取代值
    map1.size();                       //元素总计
    ();                       //判别空
    ();                      //清空自己人元素
 
    //三。遍历for(比对<int,string>::iterator iter = ();iter!=();iter++)
    {
       int keyk = iter->first;
       string valuev = iter->second;
    }

2)集集
SET的有意思的被设置。,这是一下订单的容器。,里面的的元素被分类学以遭受拔出。、取代、查找和安心调整,就像搜集同样地。,自己人调整都在登录时期内使完满。,效力很高。。集与集暗射中靶子分别是:由SET拔出的元素不克不及同上。,已经多集可以是同上的。,默许状况下,自动化机器或设备设置SET。,应用办法近似于列表。。

4:几种容器的比拟

1)带菌者

里面的材料结构:障碍物。

在末了添加或取代元素所需的时期孤独于,在中不时开端时添加或取代元素所需的时期。。

2):德克

里面的材料结构是:障碍物

对每个元素的随机号召,所需时期是忠实的的。。在开端和完毕时添加元素所需的时期是孤独的。,在集中补充或取代所需的时期随t线性的变换。。

3)名单

里面的材料结构:双向环表

不克不及随机号召一元素。,双向遍历,在前线,在最后的事物和集中添加或取代元素所需的时期是。

4)集中

键与值的相当性。

主要的无遮蔽地性

默许状况下,元素按升序次序。、

5)比对

主要的无遮蔽地性,

元素默许键的升序

5:关心迭代器减少成绩的根究、在STL慎应用折磨

让本人看一眼下一信号。:

 1 #include "" 2 #include
 3 #include
 4 5usingnamespace std;
 6 7 8int main()
 9{
10     vector<int> vect;
11for(int i = 0; i < 10; i++ )
12    {
13        vect.push_back(i);
14    }
1516     vector<int>::iterator iter = ();
17for(; iter != (); iter++ )
18    {
19if( *iter % 2 == 0 )
20        {
21            (ITER)
22        }
23    }
2425return0;
26 }

刚过去的信号如同无成绩。
已经跑步后的制造

顺序直线部分分崩离析。。ITER导演航向容器射中靶子一元素。,万一不参加、圆时,整肃取代元素是无成绩的。,已经万一、圆时对容器迭代,取代适合基准的自己人元素。,能够在若干成绩。。(ITER)继后,ITER及其迭代器使伤残。,这些迭代器不应当再次应用。,IT的再执行遗产管理人的职责,它的行动是未精确地解释的。。安心容器也会遭遇迭代器毛病的成绩。。

  航向取代元素和迭代器导演迭代器的迭代器。关于DEGO,取代头或尾射中靶子元素,它只会减少。,在什么安心驻扎军队拔出和取代调整将使伤残。。

  关于列表,不料导演取代元素的迭代器化为乌有。。意见分歧容器迭代减少报账的分别。

  这么方法取代迭代容器射中靶子元素呢?:请看上面的状况。

 1 #include "" 2 #include
 3 #include
 4 #include
 5 #include
 6 #include
 7 8usingnamespace std;
 91011int main()
12{
13     vector<int> vect;
14for(int i = 0; i < 10; i++ )
15    {
16        vect.push_back(i);
17    }
18     vector<int>::iterator iter = ();
19for(; iter != (); )
20    {
21if( *iter % 2 == 0 )
22         {
23//(ITER) //考查 应用(ITER) 行不通,我看网上某些人写到这种方法也可能的?表现不适的。24              iter = (ITER) 
25         }
26else27         {
28              iter++;
29         }
30    }
3132//////////////////////////////上面是对德克的考查。////////////////////////////33     deque<int> myDeque;
34for( int i = 0; i < 10; i++ )
35    {
36        myDeque.push_back(i);
37    }
38     deque<int>::iterator deiter = ();
39for(; deiter != ();)
40    {
41if( *deiter % 2 == 0 )
42        {
43//(deiter++); //在这一点上亦同样地(ITER) 行不通44             deiter = (deiter);
45        }
46else47        {
48             deiter++;
49        }
50    }
5152//////////////////////////////上面是列表的考查。//////////////////////53     list<int> myList;
54for( int i = 0; i < 10; i++ )
55    {
56        myList.push_back(i);
57    }
58     list<int>::iterator listiter = ();
59for(; listiter != ();)
60    {
61if( *listiter % 2 == 0 )
62        {
63//(列表)iter++);64             listiter = (列表)iter); //关于list这两种方法都可以的.因关于list来说仅有导演被取代元素的迭代器减少,它不能胜任的引起自己人迭代器都化为乌有。65        }
66else67        {
68             listiter++;
69        }
70    }
71/////////////////////上面是对比对的考查。/////////////////////////////72     map<int,int> myMap;
73     myMap[0] = 1;
74     myMap[1] = 2;
75     myMap[2] = 3;
76     myMap[3] = 4;
77     map<int,int>::iterator it = ();
78for(; it != (); )
79    {
80if( (it->second) % 2 == 0 )
81        {
82             (IT));
83//it = (IT) //关于MAP,这两种办法是可以赞成的。 c++11 遭受汇成出席的迭代器。,先于能够无汇成值。,因而这种办法是行不通的。84        }
85else86        {
87             it++;
88        }
89    }
90//////////////set 与比对同上。///////////////
91     system("pause");
92return0;
93 }

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • C++ STL基本容器使用 - evilsnake

    C++ STL基本容器使用 - evilsnake

  • 我校第十三届“学雷锋”演讲

    我校第十三届“学雷锋”演讲

  • 毛主席多宝平台官网网址!

    毛主席多宝平台官网网址!

  • 2018赤峰市事业单位|教师招聘报

    2018赤峰市事业单位|教师招聘报