C++类型的增删改查(3)--set和map

摘要

C++入门 结构体 set类型的增删改查 map类型的增删改查

5.结构体

结构体定义

1
2
3
4
5
6
struct stu{
int num;
float score;
};

stu arr[10];
在函数中调用结构体通常使用引用的方式
1
void getData(stu &);

6.set类

6.1 简介

set是集合的意思,与python的集合类似,各个元素各不相同,但在添加时会自动排好序,如不需要排序,可以引用#include <unordered_map>来使用unordered_set

1
2
3
4
5
#include <set>
using namespace std;

set<int> s; //定义一个空的int类型的集合
set<stu> s; //定义一个空的结构体类型集合

6.2 增

  1. 使用insert输入
1
2
s.insert(1);
s.insert(3);

6.3 删

  1. 使用.erase()清除定元素
1
s.erase(1);

该函数有返回值,删除成功返回1,未找到元素返回0

也可以用来删除区间,但set不能使用s.begin()+1这种,所以不太方便

1
s.erase(s.find(2),s.end());//把2开始到结束的都删了
  1. 使用.clear()清空集合
1
s.clear();

6.4 改

无法更改

6.5 查

  1. 遍历
1
2
3
4
5
6
7
for (auto i : s)
cout << i << endl;


for (set<int>::iterator it = s.begin(); it != s.end(); it++){
cout << *it << " ";
}
  1. 使用.find()查找集合中的值
1
cout << (s.find(10) != s.end()) << endl;

输出0为没找到,1为找到了

  1. 使用.size()获得元素个数
1
cout << s.size() << endl;

7.map类型

7.1 简介

map是映射,类似有python的字典类型,也会自动排序,map中的键是唯一的,以先出现的为准。

1
2
3
4
5
6
#include <map>
#include <string>
using namespace std;

map<string, int> m;//定义空map,键为string,值为int
map<string, int> m1 = {{"a",1},{"b",2}};

7.2 增

  1. 使用下标输入
1
m["hello"] = 1;

7.3 删

  1. 使用.erase()清除特定元素
1
m.erase("hello");

该函数有返回值,删除成功返回1,未找到元素返回0

也可以用来删除区间,map不能使用m.begin()+1

1
m.erase(m.begin(),s.end());//把开始到结束的都删了
  1. 使用.clear()清空集合
1
m.clear();

7.4 改

  1. 直接引用更改
1
m["hello"] += 1;

7.5 查

  1. 遍历
1
2
3
4
5
6
7
for (auto i : m)
cout << i.first << " " << i.second << endl;


for (map<string, int>::iterator it = m.begin(); it != m.end(); it++){
cout << it->first << " " << it->second << endl;
}
  1. 使用.find()查找集合中的键
1
cout << (m.find("hello") != m.end()) << endl;

输出0为没找到,1为找到了

  1. 使用.size()获得元素个数
1
cout << m.size() << endl;