创建集合并添加元素
本课属于 Coddy C++ 学习旅程的“逻辑与流程”单元。第 36 课,共 56 课。
现在你已经了解了集合是什么,接下来学习如何创建集合并向其中添加元素。要向 std::set 中添加元素,可以使用 .insert() 方法。
下面介绍如何创建一个空集合并添加元素:
std::set<int> numbers;
numbers.insert(5);
numbers.insert(2);
numbers.insert(8);集合最重要的特点是会自动拒绝重复项。如果你尝试插入同一个值两次,集合不会发生变化:
numbers.insert(5); // 这不会再添加一个 5
numbers.insert(5); // 这也不会完成所有这些插入后,你的集合中只会有 3 个不重复的元素:2、5 和 8(会自动排序)。重复插入 5 的操作会被忽略,这正是集合在维护不重复数据时如此有用的原因。
挑战
简单编写一个程序,演示 std::set 的元素唯一性特性:向集合中添加多个整数,其中包含重复值,然后显示最终大小,以证明重复值会被自动忽略。
将提供以下输入:
- 一个整数
n,表示要插入的整数数量 - 接下来是要插入集合的
n个整数
你的程序应该:
- 创建一个空的
std::set<int> - 读取要插入的整数数量
- 使用循环读取每个整数,并通过
.insert()方法将其插入集合 - 完成所有插入后,使用
.size()方法输出集合的最终大小 - 输出一条消息,说明有多少次重复插入尝试被忽略
使用以下确切的输出格式:
Set size: [final_size]
Duplicates ignored: [number_of_duplicates]被忽略的重复次数应通过总插入尝试次数减去集合的最终大小来计算。这说明集合会自动保持元素的唯一性,拒绝重复值,这是集合存储唯一元素的核心特性。
亲手试试
#include <iostream>
#include <set>
using namespace std;
int main() {
// 读取要插入的整数个数
int n;
cin >> n;
// 创建一个空集合
set<int> mySet;
// TODO: 在这里编写你的代码
// 用循环读取 n 个整数,并将它们插入集合
// 计算忽略了多少个重复值
// 输出结果
cout << "Set size: " << mySet.size() << endl;
cout << "Duplicates ignored: " << /* 计算重复值的个数 */ << endl;
return 0;
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C++ 在线编译器