吴江区建设局网站中装建设公司待遇好吗
news/
2025/9/26 16:34:46/
文章来源:
吴江区建设局网站,中装建设公司待遇好吗,即墨做网站公司,外汇返佣网站开发容器分为三类#xff0c;顺序容器#xff0c;关联容器和适配器。顺序容器又分为连续的容器#xff08;vector#xff0c;array#xff09;#xff0c;顺序容器中的离散容器#xff08;list#xff0c;slist#xff0c;forward_list#xff09;#xff0c;离连形的de… 容器分为三类顺序容器关联容器和适配器。顺序容器又分为连续的容器vectorarray顺序容器中的离散容器listslistforward_list离连形的deque关联容器有setmapmutilsetmutilmap以及用哈希表实现的unordered_setunordered_map。
1.顺序容器 连续型 第一个也是最常用的vectorvector元素存放都是连续的vector开辟内存是以2的倍数增长还有一个特点就是只能从尾部添加元素。这两个特点使vector具有以下性质
适用于可以快速随机查找在尾部增加删除元素的情况
vectorint a;
//常用操作a.push_back();//在尾部插入元素a.front(); //第一个元素a.back();//最后一个元素a.size(); //当前a在内存中有多少个元素a.capacity();//实际在内存中开辟了多少元素2的倍数增加a.size();a.empty();离散型 list我们所熟知的双向链表可以在双端进行插入删除不支持随机访问适用于频繁插入删除的情况。 list还有一个值得注意的点list内部封装了sort排序一般来说在排序的时候如果容器内部有sort优先采用容器内部的排序函数而不采用algorithm库中的排序。
常用操作
.size();
.front();
.back();
.sort();
.push_back(); .pop_back(); //在尾部进行插入删除
.push_front(); .pop_front(); //在头部进行插入删除 forward_list,即单项链表学过DS的应该都熟知其性质在操作上和list类似没有了在头部插入和删除操作。 离连型 deque,双端队列分段连续但是让使用者感觉是连续的每次扩充都是一个连续的buff具有以下性质
1,是双端队列类模板,双端队列容器由若干个块构成,每个块中的元素的地址是连续的,但是块的地址是不连续的,
2,可以从前面或后面快速的插入与删除元素,并可以快速地随机访问元素,但在中间位置插入和删除元素速度较慢
3,deque容器不像vector那样把所有的元素保存在一个连续的内存块,而是采用多个连续的存储块存放数据元素,所以空间的重新分配要比vector快,因为重新分配空间后原有的元素不需要复制 常用操作可以和vector类比也可以和list类比
[]// 可以随机访问
.size();
.front();
.back();
.sort();
.push_back(); .pop_back(); //在尾部进行插入删除
.push_front(); .pop_front(); //在头部进行插入删除
2.容器适配器 先跳过关联性容器先来看容器适配器在源码实现层面两个适配器stack和queue都是操作受限的deque。学过DS对这stack和queue的性质应该很清楚。
stack常用操作
.empty();
.size();
.push();
.pop();
.top();//返回栈顶元素
queue常用操作
.empty();
.size();
.front();//队头元素
.back();//队尾元素
.push();//队尾插入元素
.pop();//队头弹出元素
3.关联型容器 关联型容器按照存放的元素分类set存放单个元素和map存放键值对其中set元素不可重复map元素不可重复mutilset允许重复元素mutilmap允许重复元素底层是由红黑树来实现的而unordered_set不能修改元素只可以插入删除和unordered_map底层是由哈希表来实现的。
set的常用操作
// set/multiset常用成员函数
empty()://判断容器是否为空
size()://返回容器中的实际元素个数
insert()://插入元素
erase()://从容器中删除一个或几个元素
clear()://删除所有元素
count(k)://返回容器中关键字k出现的次数
find(k)://如果容器中存在关键字为k的元素,返回该元素的迭代器,否则返回end()值
upper_bound()://返回一个迭代器,指向关键字大于k的第一个元素
lower_bound()://返回一个迭代器,指向关键字不小于k的第一个元素
begin()://用于正向迭代,返回容器的第一个元素
end()://用于正向迭代,返回容器的最后一个元素后面的一个位置
rbegin()://用于反向迭代,返回容器的最后一个元素的位置
rend()://用于反向迭代,返回容器的第一个元素前面的一个位置map的常用操作
//pair类结构的声明形式如下:
struct pair{T first;T second;
}
// pair中的first为第一个分量(在map中对应key),second为第二个分量(在map中对应value)
pair double,double p1; // 定义pair对象p1
cin p1.first p1.second;
// 同时pair对,!,,,,共六个运算符进行重载,提供了按照字典序对元素进行大小比较的比较运算符模板函数
// map/multimap的主要成员函数如下
empty()://判断容器是否为空
size()://返回容器中的实际元素个数
map[key]://返回关键字为key的元素的引用,如果不存在这样的关键字,则以key作为关键字插入一个元素(不适合multimap)
insert(elem)://插入一个元素elem并返回该元素的位置
clear()://删除所有元素
find()://在容器中查找元素
count()://容器中指定关键字的元素个数(map中只有1或者0)
begin()://用于正向迭代,返回容器中的第一个元素位置
end()://用于正向迭代,返回容器中最后一个元素的位置
rbegin()://用于反向迭代,返回容器中最后一个元素的位置
rend()://用于反向迭代,返回容器中第一个元素前面的一个位置
// 在map中修改元素
mapchar,int mymap;
mymap[a] 1;// 获取map中的值
int ans mymap[a];#includemap
mapchar, int mymap;
mymap[a] 3;
mapchar, int::iterator it;
for (it mymap.begin(); it ! mymap.end(), it) {cout it-first, it-second;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918536.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!