C++ STL 中的 set::insert() 函数


本文将讨论 C++ STL 中的 set::insert() 函数,包括其语法、工作原理和返回值。

什么是 C++ STL 中的 Set?

C++ STL 中的 Set 是一种容器,其元素必须唯一且按一定顺序排列。由于元素的值标识元素本身,因此 Set 中的元素必须唯一。一旦将值添加到 Set 容器中,就不能再修改该值,尽管仍然可以删除或添加其他值。Set 使用二叉搜索树实现。

什么是 set::insert()?

insert() 函数是 C++ STL 中的内置函数,定义在 <set> 头文件中。此函数用于向 Set 容器中插入元素。插入元素后,容器的大小会增加插入元素的数量。由于 Set 包含唯一值,因此 insert() 函数不仅插入元素,还会首先检查要插入的元素是否已存在于 Set 容器中。此外,在 Set 中,所有元素都按排序后的位置存储,因此插入的元素将根据其排序后的位置插入。

语法

Set1.insert(const type_t &value); ----(1)
Or
Set1.insert(iterator position, const type_t &value); -----(2)
Or
Set1.insert(iterator position_1, iterator position_2); -----(3)

参数

  • value − 要插入到 Set 容器中的值。

  • position − 位置提示,函数将从此位置开始搜索并插入元素到合适的位置。

  • position_1, position_2 − 指定要插入到 Set 中的范围的迭代器。position_1 为范围的起始位置,position_2 为范围的结束位置。

返回值

根据传递给函数的参数,函数返回不同类型的返回值。

  • 仅传递 value 时;函数返回指向已插入到 Set 容器中元素的迭代器。

  • 传递 position 和 value 时;函数同样返回指向已插入到 Set 容器中元素的迭代器。

  • 传递 position_1 和 position_2 时;函数返回位于从 position_1 开始到 position_2 结束的范围内的值的集合。

示例

Input: set<int> myset;
   myset.insert(10);
Output: values in the set = 10
Input: set <int> myset = {11, 12, 13, 14};
   myset.insert(myset.begin(), 10);
Output: values in the set = 10 11 12 13 14

示例

按顺序(一个接一个)向 Set 中插入元素

在线演示

#include <bits/stdc++.h>
using namespace std;
int main(){
   set<int> mySet;
   mySet.insert(10);
   mySet.insert(20);
   mySet.insert(30);
   mySet.insert(40);
   mySet.insert(50);
   cout<<"Elements are: ";
   for (auto i = mySet.begin(); i != mySet.end(); i++)
      cout << *i << " ";
   return 0;
}

输出

如果运行以上代码,将生成以下输出:

Elements are : 10 20 30 40 50

示例

基于位置向 Set 中插入元素

在线演示

#include <bits/stdc++.h>
using namespace std;
int main(){
   set<int> mySet;
   auto i = mySet.insert(mySet.begin(), 10);
   i = mySet.insert(i, 20);
   i = mySet.insert(i, 40);
   i = mySet.insert(i, 30);
   i = mySet.insert(i, 80);
   i = mySet.insert(mySet.end(), 90);
   cout<<"Elements are: ";
   for (auto i = mySet.begin(); i != mySet.end(); i++)
      cout << *i << " ";
   return 0;
}

输出

如果运行以上代码,将生成以下输出:

Elements are: 10 20 30 40 80 90

更新于:2020年3月5日

13K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.