C++库 - <flat_set>



<flat_set> 头文件是标准库中的一个容器,设计为具有类似数组结构的有序关联容器。

这类似于 std::vector,并提供内存效率和快速访问,尤其适用于小型集合。此头文件是容器库的一部分。

包含 <flat_set> 头文件

要在 C++ 程序中包含 <flat_set> 头文件,可以使用以下语法。

#include <flat_set>

<flat_set> 头文件的函数

以下是 <flat_set> 头文件的所有函数列表。

迭代器

迭代器指的是允许访问容器中元素的对象,类似于数组中的指针。在 flat_set 中,它们用于以排序顺序遍历元素,而不会修改底层容器。

序号 函数和描述
1 begin & cbegin

这些函数返回指向容器中第一个元素的迭代器。

2 end & cend

这些函数返回指向容器中第一个元素的迭代器。

3 rbegin & crbegin

这些函数返回指向最后一个元素的反向迭代器。

4 rend & crend

这些函数返回指向第一个元素之前的一个的反向迭代器。

检索迭代器

在下面的示例中,我们将使用 begin() 返回指向容器第一个元素的迭代器。

#include <iostream>
#include <boost/container/flat_set.hpp>
int main() {
    boost::container::flat_set<int> fs = {10, 20, 30, 40};
    auto it = fs.begin(); 
    std::cout << "First element: " << *it << std::endl;  
    return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出:

First element: 10

容量

容量函数用于查询容器的大小和存储限制,例如检查容器是否为空,容器包含的元素数量。

序号 函数和描述
1 empty

此函数检查容器是否为空。

2 size

此函数返回容器中元素的数量。

3 max_size

此函数返回容器可以容纳的最大元素数量。

检查容器

在下面的示例中,我们将使用 empty() 来检查容器是否为空,如果它不包含任何元素,则返回 true。

#include <iostream>
#include <boost/container/flat_set.hpp>
int main() {
    boost::container::flat_set<int> fs;
    if (fs.empty()) {
        std::cout << "The flat_set is empty." << std::endl;  
    }
    return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出:

The flat_set is empty.

修改器

修改器函数用于通过添加、删除或替换元素来更改容器的内容。

序号 函数和描述
1 emplace

此函数在容器中就地构造并插入一个元素。

2 emplace_hint

此函数使用其位置提示就地插入一个元素。

3 insert

此函数将元素插入容器。

4 insert_range

此函数将一系列元素插入容器。

5 extract

此函数从 flat_set 中提取底层容器。

6 replace

此函数用一组新的元素替换底层容器。

7 erase

此函数从容器中删除元素。

8 swap

此函数交换两个 flat_set 对象的内容。

9 clear

此函数清除所有元素,使容器为空。

添加元素

在下面的示例代码中,我们将使用 insert() 将元素添加到容器中。

#include <boost/container/flat_set.hpp>
#include <iostream>
int main() {
    boost::container::flat_set<int> fs = {10, 20, 30};
    fs.insert(25);  

    for (int elem : fs) {
        std::cout << elem << " ";
    }
    return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出:

10 20 25 30

查找

查找函数允许根据其键搜索和访问元素。

序号 函数和描述
1 find

此函数查找具有特定键的元素。

2 count

此函数返回与特定键匹配的元素数量。

3 contains

此函数检查容器是否包含具有特定键的元素。

4 lower_bound

此函数返回指向第一个不小于给定键的元素的迭代器。

5 upper_bound

此函数返回指向第一个大于给定键的元素的迭代器。

6 equal_range

此函数返回匹配特定键的元素范围内的迭代器对。

查找元素

在下面的示例代码中,我们将使用 find() 搜索具有特定键的元素。

#include <boost/container/flat_set.hpp>
#include <iostream>
int main() {
    boost::container::flat_set<int> fs = {10, 20, 30, 40};
    auto it = fs.find(30);
    if (it != fs.end()) {
        std::cout << "Element 30 found." << std::endl; 
    }
    return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出:

Element 30 found.

观察者

观察者函数提供对容器内部使用的比较和排序机制的访问。

序号 函数和描述
1 key_comp

此函数用于比较键。

2 value_comp

返回比较 value_type 类型对象中的键的函数。

比较键

在下面的示例中,我们将使用 key_comp(),因为它返回比较键的对象。

#include <boost/container/flat_set.hpp>
#include <iostream>
int main() {
    boost::container::flat_set<int> fs = {30, 10, 20};
    auto comp = fs.key_comp();
    std::cout << std::boolalpha << comp(10, 30) << std::endl;  

    return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出:

true
广告