无序向量集在C++中的例子
在C++中,有序集合和无序集合都是十分常见的容器。有序集合是按照特定顺序来存储元素并且支持排序操作,而无序集合则不支持排序,在插入和查找的过程中都比有序集合更快。 在本文中,我们将主要介绍无序向量集容器的用法,包括创建、插入、删除、查找元素和使用迭代器进行遍历等。
无序向量集与有序向量集相似,但是它们在内部实现上有所不同。无序向量集使用哈希表实现,而有序向量集使用红黑树实现。因此,无序向量集有更快的插入和查找速度,但是元素的顺序是随机的。
创建无序向量集
定义一个无序向量集可以采用STL的unordered_set
实现。以下是创建一个int类型的无序向量集的示例代码:
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
unordered_set<int> mySet;
return 0;
}
在上述示例代码中,我们首先引用了iostream
和unordered_set
头文件。然后,我们定义了一个名为mySet
的空无序向量集。
插入元素
我们可以使用insert
函数在无序向量集中插入元素,该函数的时间复杂度为常数级别。以下是向无序向量集中插入元素的示例代码:
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
unordered_set<int> mySet;
mySet.insert(1);
mySet.insert(2);
mySet.insert(3);
mySet.insert(4);
mySet.insert(5);
return 0;
}
在上述示例代码中,我们定义了一个名为mySet
的无序向量集,并使用insert
函数插入5个整数元素。
删除元素
我们可以使用erase
函数从无序向量集中删除元素,该函数的时间复杂度为常数级别。以下是从无序向量集中删除元素的示例代码:
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
unordered_set<int> mySet;
for (int i = 1; i <= 5; i++) {
mySet.insert(i);
}
mySet.erase(2);
mySet.erase(4);
return 0;
}
在上述示例代码中,我们首先向无序向量集中插入了5个整数元素,然后使用erase
函数删除了其中的2和4。
查找元素
我们可以使用find
函数在无序向量集中查找元素,该函数的时间复杂度为平均常数级别,最坏为线性级别。以下是在无序向量集中查找元素的示例代码:
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
unordered_set<int> mySet;
for (int i = 1; i <= 5; i++) {
mySet.insert(i);
}
if (mySet.find(3) != mySet.end()) {
cout << "Element found\n";
} else {
cout << "Element not found\n";
}
return 0;
}
在上述示例代码中,我们首先向无序向量集中插入了5个整数元素。然后,我们在无序向量集中查找整数值为3的元素。如果元素存在,则打印“Element found”,否则打印“Element not found”。
遍历元素
我们可以使用迭代器来遍历无序向量集中的元素。以下是使用迭代器遍历无序向量集中的元素的示例代码:
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
unordered_set<int> mySet;
for (int i = 1; i <= 5; i++) {
mySet.insert(i);
}
for (auto it = mySet.begin(); it != mySet.end(); it++) {
cout << *it << " ";
}
return 0;
}
在上述示例代码中,我们首先向无序向量集中插入了5个整数元素。然后,我们使用begin()
函数获取迭代器指向集合开头的元素,使用end()
函数获取迭代器指向集合结尾的元素。最后,我们使用*
操作符展开迭代器并打印每一个元素。
结论
在C++中,无序向量集是一个快速、高效的容器,比有序向量集更适合于插入和查找操作。我们可以使用unordered_set
来定义无序向量集,并使用insert
、erase"、
find、
begin和
end`函数对它进行插入、删除、查找和遍历元素。在实际编程中,我们可以根据实际需要灵活地使用无序向量集。