码迷,mamicode.com
首页 > 编程语言 > 详细

顺序容器(操作)--C++复习(10)

时间:2019-10-05 18:52:18      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:逆序   指定   获得   获取   符号   clear   size   个数   n个元素   

一、操作

       添加删除元素、设置容器大小以及获取容器元素。

二、容器类型别名(常用)

       size_type:无符号整型,容器长度

       iterator:迭代器;const_iterator:只读容器迭代器

       value_type:元素类型

       reference:元素引用

       其他如逆序、迭代器差值等等。

       示例:

1 void test()
2 {
3     int i;
4     vector<int>::size_type t;
5     vector<int>::iterator i;
6     ....
7 }

三、begin()和end()成员

       c.begin():指向第一个元素的迭代器

       c.end():指向最后一个元素的迭代器

       示例:

1 void test()
2 {
3     vector<int> v;
4     vector<int>::iterator it1=v.begin();
5     vector<int>::iterator it2=v.end();
6 }

四、插入操作

       c.insert(p,e):在指定位置插入

       c.insert(p,n,e):在指定位置插入n个元素

       c.insert(p,b,e):在指定位置插入b迭代器开始e结束个元素

       注意添加或删除元素会使迭代器失效

       示例:

 1 void test()
 2 {
 3     
 4     vector<int>v;
 5     v.push_back(2);
 6     v.push_back(3);
 7 
 8     vector<int>::iterator it = v.begin() ;    
 9     v.insert(it, 2, 5);    
10     for (auto s= v.begin(); s != v.end(); s++)
11     {
12         cout << *s << endl;
13     }
14 
15         
16     //vector<int>::iterator it2 = v.begin();
17     //vector<int>::iterator it2 = v.insert(v.begin(), 2, 5);该种表述会报错    
18 }

五、容器大小操作

       c.size():返回容器大小;c::size_type类型

       c.max_size():返回容器中最多可容纳元素个数

       c.empty():判断容器是否为空

       c.resize(n):调整容器的大小小为n

       c.resize(n,t):调整容器的大小小为n,所有新添加的元素都为t

       示例:

 1 void test2()
 2 {
 3     vector<int>v;
 4     v.push_back(1);
 5     v.push_back(2);
 6     v.push_back(3);
 7 
 8     vector<int>::size_type s = v.size();
 9     cout << s << endl;
10 
11     vector<int>::size_type max = v.max_size();
12     cout << max << endl;
13 
14     v.resize(5, -1);
15     s = v.size();
16     cout << s << endl;
17     for (auto s = v.begin(); s != v.end(); s++)
18     {
19         cout << *s << endl;
20     }
21     
22 }

六、访问元素

       c.front():返回第一个元素的引用

       c.back():返回最后一个元素的引用

       c[n]/c.at(n):n索引位置的引用(仅适用于vector和deque)

       示例:

 1 void test3()
 2 {
 3     vector<int>v;
 4     v.push_back(1);
 5     v.push_back(2);
 6     v.push_back(3);
 7 
 8     int v1 = v.front();
 9     cout << v1 << endl;
10 
11     v1 = *v.begin();//先获得指针,再解引用
12     cout << v1 << endl;
13 
14     vector<int>::reference v2 = v.back();
15     cout << v2 << endl;
16 
17     cout << v[1] << endl;
18     cout << v.at(1) << endl;
19 
20 }

七、删除元素

       c.erase(p):删除迭代器p所指向的元素,返回一个迭代器,指向删除之后的元素

       c.erase(b,e):删除b和e迭代器之间的元素,返回一个迭代器,指向删除之后的元素

       c.clear():删除所有元素

       c.pop_back():删除最后一个元素;c.pop_front():删除第一个元素

       示例:

 1 void test4()
 2 {
 3     vector<int>v;
 4     v.push_back(1);
 5     v.push_back(2);
 6     v.push_back(3);
 7     v.push_back(4);
 8     v.push_back(5);
 9     v.push_back(6);
10     v.push_back(7);
11     cout << v.size() << endl;
12 
13     v.erase(v.begin());//删除第一个
14     for (auto s = v.begin(); s != v.end(); s++)
15     {
16         cout << *s << endl;
17     }
18 
19     v.erase(v.begin(), v.begin()+3);//删除第一个到第三个
20     for (auto s = v.begin(); s != v.end(); s++)
21     {
22         cout << *s << endl;
23     }
24 
25     v.pop_back();//删除最后一个
26     for (auto s = v.begin(); s != v.end(); s++)
27     {
28         cout << *s << endl;
29     }
30 
31     v.clear();//清空,没有元素
32     cout << v.size() << endl;
33 
34 
35 }

八、赋值和交换

       c1=c2;删除c1的所有元素,将c2中元素复制到c1

       c1.swap(c2);c1、c2交换元素

       c.assign(b,e);使用b和e之间的迭代器来重新设置c中的元素

       c.assign(n,t);重新设置为存储n个值的t元素

九、vector的内存分配

       示例:

 1 void test5()
 2 {
 3     vector<int>v;
 4     cout << v.size() << endl;//显示为0
 5     cout << v.capacity() << endl;//显示为0
 6     cout << "***********"<< endl;
 7     for (int i = 0; i <= 10; i++)
 8         v.push_back(i);
 9     //预留空间
10     v.reserve(30);
11     //当前大小
12     cout << v.size() << endl;//显示为11
13     //空间大小
14     cout << v.capacity() << endl;//显示为30
15 
16 }

 

       

顺序容器(操作)--C++复习(10)

标签:逆序   指定   获得   获取   符号   clear   size   个数   n个元素   

原文地址:https://www.cnblogs.com/jiang-021/p/11607955.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!