嵌入式和网站开发,招商建设工程有限公司网站,中小企业网站制作费用是多少?,一屏展示网站1、vector 动态数组#xff0c;可随时添加删除元素#xff0c;在堆空间开辟内存。
方法含义front() 返回第一个元素O(1) back()返回最后一个元素O(1)pop_back()删除最后一个元素O(1)push_back(ele)在末尾插入元素O(1)size()返回实际元素个数O(1)clear()清除所有元素O(N)resi…1、vector 动态数组可随时添加删除元素在堆空间开辟内存。
方法含义front() 返回第一个元素O(1) back()返回最后一个元素O(1)pop_back()删除最后一个元素O(1)push_back(ele)在末尾插入元素O(1)size()返回实际元素个数O(1)clear()清除所有元素O(N)resize(n, v)重置数组大小为n初始值为v默认0insert(it, x)在迭代器it处插入元素x O(N)erase(first, last) 删除[first,last)的所有元素O(N) begin()返回首元素的迭代器O(1)end()返回最后一个元素后一个位置的迭代器O(1)empty()判断该数组是否为空O(1) 2、stack 栈先进后出后进先出。栈只能对栈顶元素进行操作如果遍历只能将栈中元素一个个取出来存在数组中。
方法含义push(ele)元素ele入栈增加元素O(1)pop()移除栈顶元素O(1)op()取得栈顶元素O(1)empty()判断栈内是否为空O(1)size()返回栈内元素的个数O(1) 3、queue 队列先进先出。
方法含义front()返回第一个元素O(1)back()返回最后一个元素O(1)push(ele)在末尾插入元素O(1)pop()删除第一个元素O(1)size() 返回队列中元素个数O(1)empty()判断队列是否为空O(1) 4、deque 双向队列首尾都可添加删除元素。
方法含义push_back(x)/push_front(x)把x插入队尾后 / 队首O(1)back()/front()返回队尾 / 队首元素O(1)pop_back()/pop_front()删除队尾 / 队首元素O(1)erase(it) 删除双端队列中的某一个元素O(1) erase(iterator first,iterator last)删除双端队列中[first,last)中的元素O(1)empty()判断队列是否为空O(1)size()返回队列中元素个数O(1)clear()清空队列O(N) 5、priority_queue 优先队列在堆空间开辟内存是在正常队列的基础上加了优先级保证每次的队首元素都是优先级最大的。
方法含义top() 访问队首元素O(1)push() 入队O(logN)pop()堆顶队首元素出队O(logN)size()队列元素个数O(1)empty()判断是否为空O(1)
注意没有clear()方法优先队列自定义排序规则和sort()函数定义cmp函数很相似但是最后返回的情况是相反的。即相同的符号最后定义的排列顺序是完全相反的。 所以只需要记住sort的排序规则和优先队列的排序规则是相反的就可以了。
示例代码
/*
第一个参数int就是优先队列中存储的数据类型第二个参数vectorint 是用来承载底层数据结构堆的容器若优先队列中存放的是double型数据就要填vectordouble,总之存的是什么类型的数据就相应的填写对应类型。同时也要改动第三个参数里面的对应类型。第三个参数lessint 表示数字大的优先级大堆顶为最大的数字; greaterint表示数字小的优先级大堆顶为最小的数字
*/
priority_queueint, vectorint, lessint q1; // 大根堆, 每次取出的元素是队列中的最大值
priority_queueint, vectorint, greaterint q2; // 小根堆, 每次取出的元素是队列中的最小值//自定义排序struct cmp1 {bool operator()(int x, int y) {return x y;}
};
struct cmp2 {bool operator()(const int x, const int y) {return x y;}
};
priority_queueint, vectorint, cmp1 q1; // 小根堆
priority_queueint, vectorint, cmp2 q2; // 大根堆6、map 映射存放键值对key-value关联型容器内部用红黑树实现默认排序按照键的ASCII码顺序排列。
方法含义begin()返回指向map头部的迭代器clear()删除所有元素count()返回指定元素出现的次数empty()如果map为空则返回trueend()返回指向map末尾的迭代器equal_range()返回特殊条目的迭代器对erase()删除一个元素find()查找一个元素get_allocator()返回map的配置器insert()插入元素key_comp()返回比较元素key的函数lower_bound()返回键值给定元素的第一个位置max_size()返回可以容纳的最大元素个数rbegin()返回一个指向map尾部的逆向迭代器rend()返回一个指向map头部的逆向迭代器size()返回map中元素的个数swap()交换两个mapupper_bound()返回键值给定元素的第一个位置value_comp()返回比较元素value的函数
注意 查找元素是否存在时可以使用①mp.find() ② mp.count() ③ mp[key] 但是第三种情况如果不存在对应的key时会自动创建一个键值对产生一个额外的键值对空间所以为了不增加额外的空间负担最好使用前两种方法。
示例代码
/*插入元素的四种方式*/mapstring, string mp;mp[学习] 看书;mp.insert(make_pair(vegetable,蔬菜));mp.insert(pairstring,string(fruit,水果));mp.insert({hahaha,wawawa});
7、set 集合元素不会重复当插入已有元素时并不会插入进去元素自动从小到大排序。
方法含义 begin() 返回指向第一个元素的迭代器 clear() 清除所有元素 count() 返回某个值元素的个数 empty() 如果集合为空返回true end() 返回指向最后一个元素的迭代器 equal_range() 返回集合中与给定值相等的上下限的两个迭代器 erase() 删除集合中的元素 find() 返回一个指向被查找到元素的迭代器 get_allocator() 返回集合的分配器 insert() 在集合中插入元素 lower_bound() 返回指向大于或等于某值的第一个元素的迭代器 key_comp() 返回一个用于元素间值比较的函数 max_size() 返回集合能容纳的元素的最大限值 rbegin() 返回指向集合中最后一个元素的反向迭代器 rend() 返回指向集合中第一个元素的反向迭代器 size() 集合中元素的数目 swap() 交换两个集合变量 upper_bound() 返回大于某个值元素的迭代器 value_comp() 返回一个用于比较元素间的值的函数 8、array array是C11新增的容器效率与普通数据相差无几比vector效率要高自身添加了一些成员函数。和其它容器不同array容器的大小是固定的无法动态的扩展或收缩只允许访问或者替换存储的元素。array的使用要在std命名空间里。 9、tuple 元组tuple模板是pair的泛化可以封装不同类型任意数量的对象。
//声明
tupleint, int, string t1;//赋值
t1 make_tuple(1, 1, hahaha);//声明同时初始化
tupleint, int, int, int t2(1, 2, 3, 4);//使用pair对象构造tuple对象但tuple对象必须是两个元素
auto p make_pair(wang, 1);
tuplestring, int t3 {p}; //将pair对象赋给tuple对象//获取tuple对象t的第一个元素
int first get0(t);//修改tuple对象t的第一个元素
get0(t) 1;