树德602~~STL容器练习题

已结束 ACM/ICPC 开始于: 2025-4-30 10:00 1000 小时 主持人: 9

<span data-docs-delta="[[20, " 一、什么是="" vector", ="" "0:"rgba(0%2c%200%2c%200%2c%200.85)"|31:2|inline-dir:"ltr""], ="" [20, ="" "\n", ="" "24:"ndqk"|32:2|direction:"ltr""], ="" "向量(vector)是一个顺序容器(sequence="" container),它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组(元素个数可变)", ="" "0:"rgba(0%2c%200%2c%200%2c%200.85)"|27:"12"|31:2|inline-dir:"ltr""], ="" "24:"gqtl"|direction:"ltr""], ="" "二、vector的常见函数", ="" "24:"mfzz"|32:2|direction:"ltr""], ="" [30, ="" [{"a1":[40, ="" [[20, ="" "函数名", ="" "26:"54772603"|8:1|inline-dir:"ltr""], ="" "24:"rmtl"|7:1|direction:"ltr""]], ="" "25:"qkmh""], ="" "a2":[40, ="" "push_back(元素)", ="" "26:"54772603"|inline-dir:"ltr""], ="" "24:"fxgy"|7:1|direction:"ltr""]], ="" "25:"htru"|7:1"], ="" "a3":[40, ="" "insert(位置,元素)", ="" "24:"wst2"|7:1|direction:"ltr""]], ="" "25:"1bfb"|7:1"], ="" "a4":[40, ="" "insert(位置,个数n,元素)", ="" "24:"4lsb"|7:1|direction:"ltr""]], ="" "25:"bcid"|7:1"], ="" "a5":[40, ="" "insert(位置,向量头指针first,向量尾指针end)", ="" "24:"wobu"|7:1|direction:"ltr""]], ="" "25:"ej20"|7:1"], ="" "a6":[40, ="" "erase(位置)", ="" "24:"4n2m"|7:1|direction:"ltr""]], ="" "25:"ftmy"|7:1"], ="" "a7":[40, ="" "erase(开始位置,结束位置)", ="" "24:"tuym"|7:1|direction:"ltr""]], ="" "25:"jbzp"|5:1|7:1"], ="" "a8":[40, ="" "pop_back(="" )", ="" "24:"pdew"|7:1|direction:"ltr""]], ="" "25:"xedm"|5:1|7:1"], ="" "a9":[40, ="" "clear(="" "24:"lmx8"|7:1|direction:"ltr""]], ="" "25:"fki5"|5:1|7:1"], ="" "a10":[40, ="" "运算符[="" i="" ]", ="" "24:"uwak"|7:1|direction:"ltr""]], ="" "25:"nvxq"|5:1|7:1"], ="" "a11":[40, ="" "front(="" "24:"know"|7:1|direction:"ltr""]], ="" "25:"kye5"|5:1|7:1"], ="" "a12":[40, ="" "back(="" "24:"zrxl"|7:1|direction:"ltr""]], ="" "25:"mpqs"|5:1|7:1"], ="" "a13":[40, ="" "begin(="" "24:"fo9f"|7:1|direction:"ltr""]], ="" "25:"5aen"|5:1|7:1"], ="" "a14":[40, ="" "end(="" "24:"yuyo"|7:1|direction:"ltr""]], ="" "25:"e3gj"|5:1|7:1"], ="" "a15":[40, ="" "rbegin(="" "24:"hgpy"|7:1|direction:"ltr""]], ="" "25:"ogez"|5:1|7:1"], ="" "a16":[40, ="" "rend(="" )="" ", ="" "24:"rvva"|7:1|direction:"ltr""]], ="" "25:"2r8y"|5:1|7:1"], ="" "a17":[40, ="" "size(="" "24:"ppmf"|7:1|direction:"ltr""]], ="" "25:"fshh"|5:1|7:1"], ="" "a18":[40, ="" "resize(大小)", ="" "24:"xnjl"|7:1|direction:"ltr""]], ="" "25:"ubec"|5:1|7:1"], ="" "a19":[40, ="" "max_size(="" "24:"otfc"|7:1|direction:"ltr""]], ="" "25:"ih0c"|5:1|7:1"], ="" "a20":[40, ="" "empty(="" "24:"am56"|7:1|direction:"ltr""]], ="" "25:"epcl"|5:1|7:1"], ="" "a21":[40, ="" "swap(="" "24:"0xn1"|7:1|direction:"ltr""]], ="" "25:"mz9t"|5:1|7:1"], ="" "b1":[40, ="" "函数说明", ="" "24:"vxil"|7:1|direction:"ltr""]], ="" "25:"qmvz""], ="" "b2":[40, ="" "增加一个元素到向量后面", ="" "24:"y0z0"|direction:"ltr""]], ="" "25:"57dl""], ="" "b3":[40, ="" "插入元素到向量的指定位置", ="" "24:"ckqi"|direction:"ltr""]], ="" "25:"drwa""], ="" "b4":[40, ="" "插入n个相同的元素到指定位置", ="" "24:"ui8y"|direction:"ltr""]], ="" "25:"3bgw""], ="" "b5":[40, ="" "将另一个向量从first位置开始到结束(不包括end)之间的内容插入该向量的指定位置", ="" "24:"zjr6"|direction:"ltr""]], ="" "25:"1w96""], ="" "b6":[40, ="" "删除指定位置的元素", ="" "24:"0npv"|direction:"ltr""]], ="" "25:"1rmk""], ="" "b7":[40, ="" "删除向量中[first, ="" last)中元素", ="" "24:"u43v"|direction:"ltr""]], ="" "25:"v79e"|5:1"], ="" "b8":[40, ="" "弹出(删除)向量的最后一个元素", ="" "24:"j4ly"|direction:"ltr""]], ="" "25:"ehvt"|5:1"], ="" "b9":[40, ="" "清除向量的所有元素,size()变为0", ="" "24:"8rkp"|direction:"ltr""]], ="" "25:"mx7p"|5:1"], ="" "b10":[40, ="" "取向量下标为i的元素", ="" "24:"lczc"|direction:"ltr""]], ="" "25:"iv74"|5:1"], ="" "b11":[40, ="" "取向量的第一个元素", ="" "24:"07tf"|direction:"ltr""]], ="" "25:"lusa"|5:1"], ="" "b12":[40, ="" "取向量的最后一个元素", ="" "24:"rgmw"|direction:"ltr""]], ="" "25:"k8nq"|5:1"], ="" "b13":[40, ="" "返回向量头指针(迭代器)指向第一个元素", ="" "24:"qlwr"|direction:"ltr""]], ="" "25:"rbxx"|5:1"], ="" "b14":[40, ="" "返回向量尾指针,指向向量最后一个元素的下一个位置", ="" "24:"aufz"|direction:"ltr""]], ="" "25:"7zbc"|5:1"], ="" "b15":[40, ="" "反向迭代器,指向最后一个元素", ="" "24:"wiqn"|direction:"ltr""]], ="" "25:"psh1"|5:1"], ="" "b16":[40, ="" "反向迭代器,指向第一个元素之前的位置", ="" "24:"pwsa"|direction:"ltr""]], ="" "25:"ujl3"|5:1"], ="" "b17":[40, ="" "返回", ="" "24:"s1qc"|direction:"ltr""]], ="" "25:"xkdr"|5:1"], ="" "b18":[40, ="" "重新设定向量的大小,也就是保存元素的个数", ="" "24:"yosp"|direction:"ltr""]], ="" "25:"glmc"|5:1"], ="" "b19":[40, ="" "得到vector最大可以是多大", ="" "24:"y8xh"|direction:"ltr""]], ="" "25:"eouj"|5:1"], ="" "b20":[40, ="" "判断向量是否为空,等价于size(="" )为0", ="" "24:"musy"|direction:"ltr""]], ="" "25:"wdau"|5:1"], ="" "b21":[40, ="" "交换两个同类型向量的数据", ="" "24:"yhb3"|direction:"ltr""]], ="" "25:"iieb"|5:1"]}, ="" [[10, ="" 21, ="" "26:"54772603""]], ="" 2, ="" "3:308"]]], ="" "25:"jznvfd"|readonly:false"], ="" "对应于数组,要注意:向量的大小是可变的,开始时向量为空,随着不断插入元素,向量自动申请空间,容量变大。", ="" "24:"mndl"|direction:"ltr""], ="" "注意学会使用:sort="" ()、reverse="" ()="" 等函数对="" vector="" 进行排序、逆序等操作", ="" "0:"rgba(0%2c%200%2c%200%2c%200.85)"|27:"12"|31:2|inline-dir:"ltr""]]"="" data-copy-origin="https://shimo.im">

一、什么是 vector

向量(vector)是一个顺序容器(Sequence Container),它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组(元素个数可变)

二、vector的常见函数

函数名

函数说明

push_back(元素)

增加一个元素到向量后面

insert(位置,元素)

插入元素到向量的指定位置

insert(位置,个数n,元素)

插入n个相同的元素到指定位置

insert(位置,向量头指针first,向量尾指针end)

将另一个向量从first位置开始到结束(不包括end)之间的内容插入该向量的指定位置

erase(位置)

删除指定位置的元素

erase(开始位置,结束位置)

删除向量中[first, last)中元素

pop_back( )

弹出(删除)向量的最后一个元素

clear( )

清除向量的所有元素,size()变为0

运算符[ i ]

取向量下标为i的元素

front( )

取向量的第一个元素

back( )

取向量的最后一个元素

begin( )

返回向量头指针(迭代器)指向第一个元素

end( )

返回向量尾指针,指向向量最后一个元素的下一个位置

rbegin( )

反向迭代器,指向最后一个元素

rend( )

反向迭代器,指向第一个元素之前的位置

size( )

返回

resize(大小)

重新设定向量的大小,也就是保存元素的个数

max_size( )

得到vector最大可以是多大

empty( )

判断向量是否为空,等价于size( )为0

swap( )

交换两个同类型向量的数据



1、什么是迭代器

迭代器(iterator):用来指向、遍历、修改容器元素的变量,类似指针。

A、可遍历 STL 容器内全部或部分元素的对象

B、指出容器中的一个特定位置

</tr> </tbody> </table>

2、迭代器函数





#include 
using namespace std;

int main() { //初始化 vectorpjc;//创建一个叫做pjc的向量 vectorjxy = {1, 2, 3, 4, 5, 6}; /* 增加: 容器名.push_back(元素) 容器名.insert(位置, 元素); 容器名.insert(位置, n, 元素); 在位置插入n个元素 容器名.insert(位置, 容器的开始, 容器的结束); 在位置插入n个元素 */ pjc.push_back(3); pjc.push_back(2); pjc.push_back(1); pjc.insert(pjc.begin(), jxy.begin() + 3, jxy.end()); // for (int i = 0; i <= 5; i++) { // cout << pjc[i] << '\n'; // } /*删除 容器.erase(位置) 容器.erase(开始位置, 结束位置) 容器.pop_back() 默认删除最后一个位置的值 pjc.clear(); / / 修改 容器[位置]=新值 */ pjc[2] = 100; for (int i = 0; i <= 5; i++) { cout << pjc[i] << '\n'; } /*查询 容器.front() 容器.back() 容器.size() 容器.empty() */ cout << pjc.front() << '\n'; cout << pjc.back() << '\n'; cout << pjc.size() << '\n'; cout << pjc.empty() << '\n'; return 0; }

</span> 查看讲义和题解

操作

效果



*
</td>

返回当前位置上的元素值。如果该元素有成员,可以通过迭代器以 operator -> 取用

++

将迭代器前进至下一元素

==和 !=

判断两个迭代器是否指向同一位置

=

为迭代器赋值,(将所指元素的位置赋值过去)

状态
已结束
规则
ACM/ICPC
题目
23
开始于
2025-4-30 10:00
结束于
2025-6-11 2:00
持续时间
1000 小时
主持人
参赛人数
9