C++ STL的unordered_set insert()函数

C++ STL的unordered_set insert()函数

概述

C++ STL的 unordered_set 是一个哈希表,它通过哈希函数将元素插入到容器中,使得查找、插入等操作都可以在常数时间内完成。在 unordered_set 中插入元素可以使用 insert() 函数。下面我们将具体介绍 unordered_set 中的 insert() 函数的使用方法。

使用方法

基本使用

unordered_set 中的 insert() 函数有如下两种使用方法:

bool insert(const value_type& value);
template<typename P> bool insert(P&& value);

其中第一个函数的参数类型为 const value_type&,表示将 value_type 类型的值 value 插入到 unordered_set 中。例如:

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> s;
    s.insert(1);
    s.insert(2);
    s.insert(3);
    for (const auto& k : s) {
        std::cout << k << ' ';
    }
    return 0;
}

输出结果为:

1 2 3

第二个函数的参数类型为 P&&,这里的 P 可以是一个类型或者一个 std::pair 类型,表示将 P 类型的值插入到 unordered_set 中。例如:

#include <iostream>
#include <unordered_set>

struct Foo {
    int x;
    int y;
    Foo(int a, int b) : x(a), y(b) {}
    bool operator==(const Foo& f) const {
        return x == f.x && y == f.y;
    }
};

int main() {
    std::unordered_set<Foo> s;
    s.insert(std::make_pair(1, 2));
    s.insert(Foo(2, 3));
    for (const auto& k : s) {
        std::cout << '(' << k.x << ',' << k.y << ')' << ' ';
    }
    return 0;
}

输出结果为:

(1,2) (2,3)

使用 insert() 函数插入多个元素

标准库还提供了另一种插入多个元素的方法,即使用 insert() 函数的迭代器版本。这个版本的 insert() 函数可以接收两个迭代器作为参数,将两个迭代器范围内的元素插入到 unordered_set 容器中。例如:

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> s;
    std::vector<int> v = {1, 2, 3, 2, 1};
    s.insert(v.begin(), v.end());
    for (const auto& k : s) {
        std::cout << k << ' ';
    }
    return 0;
}

输出结果为:

3 2 1

insert() 函数返回值

insert() 函数将元素成功插入到 unordered_set 中时,返回值为 true。当 unordered_set 中已经有与待插入元素 valueP 关键字相同的元素时,新元素不会被插入,并且返回值为 false。例如:

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> s = {1, 2, 3};
    bool b1 = s.insert(1);
    bool b2 = s.insert(4);
    std::cout << b1 << '\n'; // false
    std::cout << b2 << '\n'; // true
    for (const auto& k : s) {
        std::cout << k << ' ';
    }
    return 0;
}

输出结果为:

0
1
1 2 3 4

总结

unordered_set 提供了高效的哈希查找和插入操作, insert() 函数可以方便地将元素插入到 unordered_set 中。在使用 insert() 函数时要注意返回值,根据返回值的布尔值判断元素是否插入成功。此外,也可以使用迭代器版本的 insert() 函数一次性插入多个元素。不过,要注意不能将已经存在于 unordered_set 中的关键字再次插入,否则会导致插入失败并返回 false

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 教程