vector常用接口

1.vector介绍

1.是表示大小可以改变的容器
2.采用一块连续的空间存储元素,可以用下标对元素进行访问。和数组很类似,但是vector的大小可以动态改变,并且是被容器自动处理的
3.从本质上来看vector是动态分配数组来存储它的元素的,因此当插入元素需要改变容量的时候,它会重新分配一个数组,并且将元素全部转移到该数组之中,就时间来说,这是一个代价比较高的方式。
4.vector分配空间时,会额外分配一些空间来适应生长。不同的库的实现虽然略有不同,但是整体相似,因此尾插入一个元素时的时间复杂度为常数时间
5.vector对末尾的元素的插入、删除是很高效的,但是操作其它位置的元素的效率就不那么高效了
在这里插入图片描述

2.构造函数

2.1默认构造函数

在这里插入图片描述

2.2半缺省构造

在这里插入图片描述

2.3拷贝构造

在这里插入图片描述

2.4迭代器构造

在这里插入图片描述

3.元素访问方式

3.1[下标]访问、迭代器访问

在这里插入图片描述

3.2范围for需注意陷阱

在这里插入图片描述

4.容器接口

4.1max_size(无用接口)

判断当前内存可以存储此元素的最多的个数
在这里插入图片描述

4.2size、capacity、reserve、resize

4.2.1使用展示

在这里插入图片描述

4.2.2capacity增容规则

在这里插入图片描述

4.3[]访问

在这里插入图片描述

4.4swap

类的swap是交换类中的成员,std之中的swap则需要发生3次深拷贝

4.5push_back、pop_back

尾插和尾删

4.6insert、erase

insert和erase一般是不推荐使用的,因为时间复杂度太高

在pos位置,插入val
vector没有提供头插的接口,但是可以用insert来完成。
这是因为头插头删的时间复杂度很高,如果经常使用头插头删不应该使用 vector而应该用list
在这里插入图片描述
在这里插入图片描述

4.7迭代器失效

在这里插入图片描述

4.8find

vector里面没有提供find接口,而是用算法里面的find
在这里插入图片描述在这里插入图片描述

因为许多容器都需要find,因此直接提供一个函数模板,传入迭代器便可以寻找,find的返回值是迭代器,未找到返回的是最右边的迭代器,因为迭代器都是左闭右开的
在这里插入图片描述

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C++中,可以使用vector的insert函数在vector入元素。入元素到vector部的方法是使用insert函数,并将其位置参数设置为begin(),并在val参数中指定要入的值。以下是一个示例代码: ``` vector<int> c; c.insert(c.begin(), val); ``` 其中,c是vector对象,val是要入的值。通过将位置参数设置为begin(),可以将元素入到vector部。请确保val的类型与vector中元素的类型相匹配。 引用提供了一个关于vector入元素的示例代码,通过insert函数和位置参数,我们可以在任意位置入元素。而引用提到,vector没有直接提供接口,但可以使用insert函数来实现。由于删的时间复杂度较高,如果经常需要删操作,建议使用list而不是vector。 请注意,使用insert函数入元素可能会导致迭代器失效。因此,在对vector进行入操作后,需要小心处理迭代器的有效性,以避免访问失效迭代器。 希望这个回答能够解决你的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【C++】vector添加元素](https://blog.csdn.net/weixin_46308081/article/details/118607011)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [vector常用接口](https://blog.csdn.net/ych9527/article/details/115366356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值