C++ set insert详解
在C++中,set是一种关联容器,它可以存储不重复的元素,并且按照特定的顺序进行排序。set中每个元素都是唯一的,如果插入一个已存在的元素,操作会被忽略。
set的特点
- set中的元素是唯一的。
- 元素会按照特定的排序规则排序。
- 插入操作会忽略重复的元素。
set的基本操作
在C++标准库中,set的基本操作包括插入元素、删除元素、查找元素等。其中,插入元素是常用操作之一。下面就详细介绍C++中set的插入操作。
set的插入操作
在C++中,set的插入操作可以使用insert()函数来实现。insert()函数有多种重载形式,可以插入单个元素,也可以插入一个范围内的元素。下面我们分别介绍这两种用法。
插入单个元素
使用insert()函数插入单个元素时,调用的方式如下所示:
#include <iostream>
#include <set>
int main() {
std::set<int> mySet;
mySet.insert(10);
mySet.insert(20);
mySet.insert(30);
for (auto it = mySet.begin(); it != mySet.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
运行结果:
10 20 30
插入一个范围内的元素
除了插入单个元素,insert()函数还可以插入一个范围内的元素。当需要插入一个数组或者另一个容器中的元素时,可以使用insert()函数的另一种重载形式:
#include <iostream>
#include <set>
#include <vector>
int main() {
std::set<int> mySet;
std::vector<int> vec = {1, 2, 3, 4, 5};
mySet.insert(vec.begin(), vec.end());
for (auto it = mySet.begin(); it != mySet.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
运行结果:
1 2 3 4 5
insert()返回值
insert()函数在插入元素时会返回一个pair类型的值,其中的first表示插入的元素的位置,second表示插入是否成功。如果插入成功,second为true;如果插入失败(比如元素已存在),second为false。我们可以通过返回值判断插入是否成功。
#include <iostream>
#include <set>
int main() {
std::set<int> mySet = {10, 20, 30};
auto res = mySet.insert(20);
if (res.second) {
std::cout << "Insert successful!" << std::endl;
} else {
std::cout << "Insert failed!" << std::endl;
}
res = mySet.insert(40);
if (res.second) {
std::cout << "Insert successful!" << std::endl;
} else {
std::cout << "Insert failed!" << std::endl;
}
return 0;
}
运行结果:
Insert failed!
Insert successful!
总结
通过以上的讲解,我们详细介绍了C++中set的插入操作,包括插入单个元素、插入一个范围内的元素以及insert()函数的返回值。set的插入操作在实际开发中非常常用,能够方便地向set中添加元素,并且保证元素的唯一性。