C++ Boost Container库有哪些功能

发布时间:2022-11-07 09:20:38 作者:iii
来源:亿速云 阅读:172

本文小编为大家详细介绍“C++ Boost Container库有哪些功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++ Boost Container库有哪些功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、关于Boost.Container

Boost.Container

Boost.Container 是一个 Boost 库,提供与标准库相同的容器。 Boost.Container 专注于额外的灵活性。例如,这个库中的所有容器都可以在共享内存中与 Boost.Interprocess 一起使用——这对于标准库中的容器并不总是可行的。

Boost.Container 提供了额外的优势:

二、Boost.Container示例

示例 20.1 说明了不完整的类型。

注意

本章中的示例无法使用 Visual C++ 2013 和 Boost 1.55.0 编译。此错误在工单 9332 中进行了描述。它已在 Boost 1.56.0 中修复。

示例 20.1。带有 Boost.Container 的递归容器

#include <boost/container/vector.hpp>
using namespace boost::container;
struct animal
{
  vector<animal> children;
};
int main()
{
  animal parent, child1, child2;
  parent.children.push_back(child1);
  parent.children.push_back(child2);
}

类动物有一个类型为 boost::container::vector<animal> 的成员变量 children。 boost::container::vector 在头文件 boost/container/vector.hpp 中定义。因此,成员变量children 的类型基于定义变量children 的类animal。在这一点上,还没有完全定义动物。虽然该标准不要求标准库中的容器支持不完整类型,但 Boost.Container 明确支持递归容器。标准库定义的容器是否可以递归使用取决于实现。

示例 20.2。使用 boost::container::stable_vector

#include <boost/container/stable_vector.hpp>
#include <iostream>
using namespace boost::container;
int main()
{
  stable_vector<int> v(2, 1);
  int &i = v[1];
  v.erase(v.begin());
  std::cout << i << '\n';
}

除了标准库中众所周知的容器之外,Boost.Container 还提供容器。示例 20.2 引入了容器 boost::container::stable_vector,其行为类似于 std::vector,除了如果 boost::container::stable_vector 更改,所有迭代器和对现有元素的引用仍然有效。这是可能的,因为元素没有连续存储在 boost::container::stable_vector 中。即使元素没有彼此相邻存储在内存中,仍然可以使用索引访问元素。

Boost.Container 保证示例 20.2 中的引用 i 在向量中的第一个元素被擦除时仍然有效。该示例显示 1。

请注意,boost::container::stable_vector 和该库中的其他容器都不支持 C++11 初始化列表。在示例 20.2 中,v 被初始化为两个元素都设置为 1。

boost::container::stable_vector 在 boost/container/stable_vector.hpp 中定义。

Boost.Container 提供的其他容器是 boost::container::flat_set、boost::container::flat_map、boost::container::slist 和 boost::container::static_vector:

boost::container::static_vector 在 boost/container/static_vector.hpp 中定义。

读到这里,这篇“C++ Boost Container库有哪些功能”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. NDK 编译 boost库
  2. 7 C++ Boost 序列化

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:Java Email邮件发送如何实现

下一篇:C++ Boost Array与Unordered怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》