作业介绍

一、动态数组(Vector)

定义和初始化:

vector<int> v1;      // 创建一个空的动态数组
vector<int> v2(10);  // 创建一个空间为10的动态数组,元素默认值为0
vector<int> v3(5,3); // 创建一个空间为5的动态数组,元素默认值为3
vector<int> v4(v3);  // 创建一个动态数组,其内容拷贝v3
int a[100] = {1,2,3,4,5,6,7,8,9,10};
vector<int> v5(a, a+5); // 拷贝数组a[0]~a[4]的元素到动态数组v5中

操作方法

v1.push_back(x)  // 在动态数组v1最后添加一个元素x 
v1.pop_back()    // 删除动态数组v1最后一个元素
v1.front()       // 访问(获取)动态数组v1第一个元素
v1.back()        // 访问(获取)动态数组v1最后一个元素
v1.erase(x)      // 删除指定位置的元素,x是一个迭代器
// 在v1的末尾添加v2的所有元素
v1.instert(v1.end(), v2.begin(), v2.end())      
v1.begin()       // 获取动态数组第一个元素的迭代器
v1.end()-1       // 获取动态数组最后一个元素的迭代器
v1.size()        // 获取动态数组中的元素个数
v1.empty()       // 判空
v1.clear()       // 清空动态数组

二、集合(Set)

定义和初始化

set<int> s1;  // 创建一个空的集合
set<int> s2(s1); // 创建一个集合,其内容拷贝s3
int a[100] = {5,6,1,3,1,5,1,4,6,1};
set<int, greater<int> > s3(a, a+10); // 创建一个集合,把[0,9]的元素放到其中

操作方法

s1.insert(x)  // 往集合中添加一个元素
s1.find(x)    // 查找元素x是否出现过,找到就返回对应的迭代器,否则返回end()
s1.erase(x)   // 删除集合中的x元素,之间传入值即可
s1.size()     // 获取动态数组中的元素个数
s1.empty()    // 判空
s1.clear()    // 清空动态数组

三、哈希表(Map)

定义和初始化

map<string, int> mp;   // 第一个类型为键的类型,第二个类型为值的类型

操作方法

mp.insert({k,v})  // 往哈希表里面添加一个键值对
mp.find(x)        // 查找键x是否出现过,找到就返回对应的迭代器,否则返回end()
mp.count(x)       // 统计键x出现了几次,因为键只会出现1次,所以只会返回0或1
mp.erase(x)       // 删除键 x

四、迭代器 & 容器遍历

迭代器定义

// 容器类型 ::iterator  迭代器变量;
vector<int>::iterator it1;
set<int>::iterator it2;
map<string, int>::iterator it3;

三种容器遍历方法

迭代器遍历

vector<int>::iterator it;
for( it=v.begin(); it!=v.end(); it++){
	cout<<*(it)<<" ";
}

auto : 自动类型

for(auto it=v.begin(); it!=v.end(); it++){
	cout<<*(it)<<" ";
}

C++新特性

for(auto i: v){  
	cout<<i<<" ";
}
状态
已结束
题目
4
开始时间
2024-4-27 15:30
截止时间
2024-5-5 23:59
可延期
24 小时