C++ STL概念之 序列式容器4(bitset / array / forward_list / deque)

bitset 接口

set

all bits (1)
bitset& set() noexcept;
single bit (2)
bitset& set (size_t pos, bool val = true);

用于序列中的一位或所有位设置为1。

  1. bitset& set() noexcept; 这个版本将位序列中的所有位都设为1。

  2. bitset& set(size_t pos, bool val = true); 这个版本能够设置位序列中的指定位。参数 pos 为我们想要设置的位的位置,参数 val 是设定的值,如果不提供 val 参数,默认将位设置为1。如果提供了 val 参数并且其值为 false,则将指定位设为0。

reset

all bits (1)
bitset& reset() noexcept;
single bit (2)
bitset& reset (size_t pos);
用于重置(即设置为0)位序列中的一位或所有位。

1.重置所有位: 使用无参数版本的 reset 函数可以将位序列中的所有位都重置为0。
2.重置指定位: 使用带有位置参数的 reset 函数可以仅重置位序列中指定位置的位。

tset

bool test (size_t pos) const;

用于检查位序列中指定位置的位是否被设置为1。如果指定位置的位是1,则返回 true,如果是0,则返回 false

  • pos: 要检查的位的位置。
 

请注意,如果传入的位置 pos 超出了 bitset 的大小,这个函数会抛出 std::out_of_range 异常。

array(C++11)

array是一种容器,它封装了固定大小的数组。

array的[ ]相比C的静态数组,能更严格的检查数组越界

std::array 提供的一些重要特性包括:

  • .size(): 返回数组的大小(元素数量)。
  • .at(index): 返回数组中指定位置的元素,带有越界检查。
  • .front(): 返回数组中的第一个元素。
  • .back(): 返回数组中的最后一个元素。
  • .data(): 返回一个指向数组首元素的指针。

forward(C++11)

它表示一个单向链表

 std::list 相比,std::forward_list 由于没有维护双向序列,因此使用的内存更少。

一些基本的 std::forward_list 操作包括:

  • 初始化: 可以通过一个初始化列表来初始化 std::forward_list
#include <forward_list>std::forward_list<int> myList = {1, 2, 3, 4, 5};
  • 添加元素: 使用 push_front 在链表的开始位置添加元素。
myList.push_front(0);
  • 访问元素std::forward_list 没有直接通过索引访问元素的方法。要访问元素,通常需要遍历列表。
for (auto &element : myList) {// 使用 element
}
  • 删除元素: 使用 erase_after 根据迭代器位置删除元素。
myList.erase_after(myList.before_begin()); // 删除第一个元素

请注意, std::forward_list 没有提供随机访问的功能, 这意味着不能通过索引来直接访问或修改元素。此外,std::forward_list 通常用于特定的场景,例如当你需要频繁地在链表前面插入或删除元素时,它可以提供比 std::list 更好的性能。

deque(C++11)

它是一种序列容器,与 std::vector 类似,但提供了在序列前后两端高效插入和删除元素的能力。

主要特点

  • 动态大小:与数组不同,std::deque 可以根据需要动态增长或缩小。
  • 随机访问:就像数组和 std::vectorstd::deque 支持快速随机访问,可以通过索引直接访问任何元素。
  • 双端操作:可以在 std::deque 的前端和后端快速地插入和删除元素,这是 std::deque 与 std::vector 的主要区别,因为 std::vector 在前端插入和删除元素时效率较低。

缺点

  • 额外开销:由于底层使用了指针数组和多个数据块,std::deque 比 std::vector 有额外的内存开销。
  • 非连续内存:虽然 std::deque 提供了类似连续内存的随机访问接口,但实际上它的元素可能分布在非连续的内存块中,这可能影响到它在数据局部性方面的表现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/12765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 高级面试问题及答案2

Java 高级面试问题及答案 问题 1: 请解释 Java 中的多线程和并发的区别&#xff0c;并举例说明如何避免常见的并发问题。 答案&#xff1a; 多线程是指程序中有多个线程同时执行&#xff0c;而并发是指程序设计中允许多个操作看起来是同时执行的&#xff0c;即使它们可能不是…

视频智能检测AI智能分析网关V4告警消息推送:公众号消息推送的配置步骤介绍

TSINGSEE青犀智能分析网关V4属于高性能、低功耗的软硬一体AI边缘计算硬件设备&#xff0c;目前拥有3种型号&#xff08;8路/16路/32路&#xff09;&#xff0c;支持Caffe/DarkNet/TensorFlow/PyTorch/MXNet/ONNX/PaddlePaddle等主流深度学习框架。硬件内部署了近40种AI算法模型…

继承,多态,封装以及对象的打印

前言&#xff1a; 我们都知道Java是一种面向对象的编程语言&#xff0c;面向对象语言的三大特性就是继承&#xff0c;多态&#xff0c;封装&#xff0c;而这些特性正好的Java基础的一个主体内容。在学到这之前&#xff0c;我们肯定已经学习过了类和对象&#xff0c;所以这部分…

光学镜片镀膜上下料设备

在现代化工业生产的浪潮中&#xff0c;智能化、自动化已成为提升生产效率、降低成本的关键所在。特别是在精密制造领域&#xff0c;对于设备的高精度、高效率要求更是严苛。今天向大家推荐一款引领行业潮流的智能设备——富唯智能镀膜上下料设备。 产品介绍 实现功能 单面镀膜…

NGINX SPRING HTTPS证书

服务器&#xff1a;xxx.xxx.xxx.56 客户端器&#xff1a;xxx.xxx.xxx.94##生成服务器证书和密钥容器 keytool -genkey -alias tas-server -keypass 250250 -keyalg RSA -keysize 2048 -validity 3650 -keystore D:\https证书\tas-server.jks -storepass 250250 -dname "C…

IT行业的现状与未来:技术创新引领时代变革

随着技术的不断进步&#xff0c;IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链&#xff0c;这些技术正在重塑我们的生活和工作方式。本文将探讨当前IT行业的现状及未来发展趋势&#xff0c;并邀请行业领袖、技术专家和创…

低成本创业分享,一个不用自己囤货、进货、直播的项目|抖音小店

大家好&#xff0c;我是喷火龙 在抖音上面开店&#xff0c;不仅可以卖自己的商品&#xff0c;还可以卖别人的商品赚差价&#xff0c; 并且不需要你囤货、进货、直播、剪视频&#xff0c;也不需要有粉丝。 这个项目就是抖音小店无货源。 很多朋友对抖音小店无货源模式的玩法…

tensorrtx-yolov5-v6.0部署在windows系统

前言&#xff1a;最近几天一直在搞这个东西&#xff0c;现在跑通了&#xff0c;为了以后自己看和帮助他人&#xff0c;就记录一下。虽然是跑通了但是觉得怪怪的&#xff0c;感觉不是自己想要的效果&#xff0c;另外这个只能检测图片&#xff0c;不能摄像头实时监测(我暂时没找到…

MATLAB实现BFGS算法,用wolfe选择步长

BFGS 算法简介 BFGS&#xff08;Broyden-Fletcher-Goldfarb-Shanno&#xff09;算法是一种用于无约束优化问题的准牛顿法。它通过构建和更新近似的海森矩阵&#xff08;Hessian Matrix&#xff09;来加速优化过程。BFGS 是一种常用且有效的优化算法&#xff0c;尤其适用于大规…

python脚本-修改.xlsx表格内“符合条件的”单元格样式(字体颜色、底色)

方法一 创建新的表格&#xff0c;将源表格的值写入新表格内&#xff08;写之前check每个单元格&#xff0c;进行样式设置&#xff09;&#xff0c;这种做法会让“未指定样式的单元格”默认样式写入 # codingutf-8 import pandas as pd from openpyxl.styles import Font,Patt…

spring 约定优于配置 spring boot约定大于配置

目录 约定优于配置 SpringBoot 中的约定优于配置 约定优于配置的起源 约定优于配置 约定优于配置&#xff1a;也称作按约定编程是一种软件设计范式。目的在于减少软件开发人员所需要做出决定的数量&#xff0c;从而获得简单的好处&#xff0c;而又不失其中的灵活性。开发人员仅…

Linux磁盘I_O性能优化:调整请求队列长度

在本篇博客中&#xff0c;将探讨如何在CentOS系统上调整磁盘I/O请求队列长度&#xff0c;以改善机械硬盘&#xff08;HDD&#xff09;和固态硬盘&#xff08;SSD&#xff09;的读写性能。调整请求队列长度是一个高级优化策略&#xff0c;可以帮助减少I/O操作的延迟&#xff0c;…

springsecurity项目快速搭建

自定义security的搭建 package com.sangeng.config;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;Co…

智能文档处理:解析文档场景下多模态大模型的应用与研究前沿

解析文档场景下多模态大模型的应用与研究前沿 一、TextIn 文档解析技术1. 现有大模型文档解析问题2. 文档解析技术背景3. TextIn 文档解析技术架构4. 版面分析关键技术 Layout-engine 二、TextIn 文本向量化技术三、TextIn.com Text Intelligence 一、TextIn 文档解析技术 hell…

【driver6】debugfs,性能优化,

文章目录 1.内核调试手段&#xff1a;debugfs.h中api建立目录/sys/kernel/debug2.性能优化&#xff1a;裸磁盘无法使用&#xff0c;一般都刷文件系统。驱动加上要考虑磁盘io&#xff0c;内存占用&#xff0c;cpu使用情况3.Valgrind内存泄漏排查案例&#xff1a;4.cpu瓶颈&#…

英语学习笔记10——Look at ...

Look at … 看…… 词汇 Vocabulary fat adj. 胖的&#xff0c;丰富的 n. 脂肪 例句&#xff1a;他是个胖男孩。    He is a fat boy. 搭配&#xff1a;fat cat 有钱人&#xff0c;土豪 woman n. 女人 girl n. 女孩 madam n. 女士 man n. 男人 boy n. 男孩 sir n. 先生 …

云飞云共享云桌面如何降低电脑投入成本?

云飞云共享云桌面作为一种创新的云计算解决方案&#xff0c;以其独特的优势在业界赢得了众多认可。其中&#xff0c;它极大地降低了电脑投入成本&#xff0c;为企业和个人用户带来了实实在在的经济效益。那么&#xff0c;云飞云共享云桌面是如何实现这一点的呢&#xff1f; 设…

spring-boot-cache整合redis

引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId> </dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>…

Python 机器学习 基础 之 监督学习/分类问题/回归任务/泛化、过拟合和欠拟合 基础概念说明

Python 机器学习 基础 之 监督学习/分类问题/回归任务/泛化、过拟合和欠拟合 基础概念说明 目录 Python 机器学习 基础 之 监督学习/分类问题/回归任务/泛化、过拟合和欠拟合 基础概念说明 一、简单介绍 二、监督学习 三、分类问题 四、回归任务 五、泛化、过拟合和欠拟合…

分治算法(Divide-and-Conquer Algorithm)

分治算法&#xff08;Divide-and-Conquer Algorithm&#xff09;是一种重要的计算机科学和数学领域的通用问题解决策略。其基本思想是将一个复杂的大规模问题分割成若干个规模较小、结构与原问题相似但相对简单的子问题来处理。这些子问题相互独立&#xff0c;分别求解后再通过…