容器

顺序容器:vector list deque(双端队列),

顺序容器适配器:stack queue priority_queue

关联容器:map set

 

顺序容器:

1)顺序容器的定义

使用容器要先包含所在的头文件vector,list还有deque,容器类是带有模板的类,初始化还有定义时要记得实例化方法。

①容器的初始化,容器提供了多种构造函数,如下:

C<T> c;

C c(c2);

C c(b,e); 创建容器c,其元素是迭代器b和e标识的范围内元素的副本,适应于所有容器

C c(n,t); 用n个值为t的元素创建容器c;只适应于顺序容器

C c(n); 创建具有n个值初始化元素的容器c;只适应于顺序容器

②容器内元素的类型约束

元素类型必须支持赋值操作

元素类型必须可以复制

2)迭代器

①常用迭代器的运算

*it;

it->men;

++it;it++;it--;--it;

it1==it2;it11=it2;

②vector和deque类型迭代器支持的操作

it+n;it-n;

it1 +=it2;it1 -=it2;

it1 - it2;

>,>=,<,<=

③迭代器范围

可以用两个指向同一个容器不同元素的迭代器之间的范围,标志迭代器范围。用first和last表示,则其范围为[first,last),其中last可以是指向超出末端的下一位置。

④当容器元素被修改或者删除时可能会引起迭代器的失效

3)顺序容器的操作

c.begin();c.end();

c.rbegin();c.rend(); 返回一个逆迭代器,分别指向最后一个元素和第一个元素的前一个位置

c.push_back(t);在c的尾部添加一个元素t;返回值为void //只适应于vector和deque

c.push_front(t);在c的前端添加t //只适应于vector和deque

 

c.insert(p,t);在迭代器p前面添加t

c.insert(p,n,t);在p前添加n 个值为t的元素

c.insert(p,b,e);在p前添加迭代器b和e之间的元素

 

c.size(); 返回c中元素个数,返回值为c::size_type

c.max_size();返回c中最多可容纳的元素数

c.empty();为空则返回true

c.resize(n);调整c的大小使其可以容纳n个元素,若n<c.size()则删除多余的元素,否则添加值初始化的新元素

c.resize(n,t)调整c的大小使其可容纳n个元素,新添加的元素值为t

 

c.back();返回容器c的最后一个元素的引用,若c为空则操作未定义

c.front();返回c的第一个元素的引用,若c为空则操作未定义

c[n];同下

c.at(n);返回小标为n的元素的引用,只适应于vector和deque,若下标越界则操作未定义

 

c.erase(p);删除迭代器p指向的元素,返回被删除元素的后面一个元素的迭代器,若p指向超出末端的下一个位置,则该函数未定义

c.erase(b,e);删除迭代器b和e之间的元素,返回被删除元素段的后一个元素迭代器,若e指向超出末端的下一位置,返回的迭代器指向超出末端的下一位置

c.clear();删除所有元素,返回void

c.pop_back();删除最后一个元素,返回void,若c为空,则该函数未定义

c.pop_front();删除第一个元素,返回void,若c为空,则该函数未定义

 

赋值和assign操作会使左操作数的迭代器失效,swap则不会

c1=c2;删除c1中元素,然后将c2元素复制给c1。要求c1和c2的容器类型和元素类型必须一致

c1.swap(c2);将c1和c2的元素交换,要求c1和c2的容器类型和元素类型必须一致,执行速度比=操作快,而且不会使迭代器失效

c.assign(b,e);将迭代器b和e之间的元素复制到c中,要求迭代器b,e不能指向c的元素

c.assign(n,t);将c中元素置为n个t

 

vector的自增长

c.capacity();返回当前容器的容量

c.reserve(n);设置vector容器的预留n个元素的存储空间

 

顺序容器的选用

vector

从后面快速的插入与删除,直接访问任何元素

deque

从前面或后面快速的插入与删除,直接访问任何元素

list

双链表,从任何地方快速插入与删除

 

4)string类型

 string 类型可以使用很多容器操作

insert()

assign()

erase()

string类型的其他操作:

substr();

append();

replace();

find();系列函数

compare();系列函数

5)容器适配器:stack queue priority_queue

 stack适配器:

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(item);对于队列:在队尾压入item;对于优先级队列在基于优先级的适当位置插入新元素

 

关联容器:

可以使用大多顺序容器的操作,但不提供front,push_front,pop_front,back,push_back,pop_back。

初始化时不能通过指定容器大小初始化

不提供assign操作

关联容器的erase操作返回void类型

resize操作不能用于关联容器

1)map类型

使用下标访问元素,若map中无该元素,则自动添加该元素

count(k)检查键值k出现的次数

find(k)返回键值k对应的元素的迭代器,若不存在返回超出末端的迭代器

 

2)set类型

存储的只是键的集合,不支持下标访问

3)multimap 和 multiset

可以是一个键对应多个值,multimap不支持下标操作

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园2.0是高校信息化建设的新阶段,它面对着外部环境变化和内生动力的双重影响。国家战略要求和信息技术的快速发展,如云计算、大数据、物联网等,为智慧校园建设提供了机遇,同时也带来了挑战。智慧校园2.0强调以服务至上的办学理念,推动了教育模式的创新,并对传统人才培养模式产生了重大影响。 智慧校园建设的解决之道是构建一个开放、共享的信息化生态系统,利用互联网思维,打造柔性灵活的基础设施和强大的基础服务能力。这种生态系统支持快速迭代的开发和持续运营交付能力,同时注重用户体验,推动服务创新和管理变革。智慧校园的核心思想是“大平台+微应用+开放生态”,通过解耦、重构和统一运维监控,实现服务复用和深度融合,促进业务的快速迭代和自我演化。 智慧校园的总体框架包括多端协同,即“端”,它强调以人为心,全面感知和捕获行为数据。这涉及到智能感知设备、超级APP、校园融合门户等,实现一“码”或“脸”通行,提供线上线下服务端的无缝连接。此外,台战略是智慧校园建设的关键,包括业务台和数据台,它们支持教育资源域、教学服务域等多个领域,实现业务的深度融合和数据的全面治理。 在技术层面,智慧校园的建设需要分期进行,逐步解耦应用,优先发展轻量级应用,并逐步覆盖更多业务场景。技术升级路径包括业务数据化、数据业务化、校园设施智联化等,利用IoT/5G等技术实现设备的泛在互联,并通过人工智能与物联网技术的结合,建设智联网。这将有助于实现线上线下一网通办,提升校园安全和学习生活体验,同时支持人才培养改革和后勤管理的精细化。 智慧校园的建设不仅仅是技术的升级,更是对教育模式和管理方式的全面革新。通过构建开放、共享的信息化生态系统,智慧校园能够更好地适应快速变化的教育需求,提供更加个性化和高效的服务,推动教育创新和人才培养的高质量发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值