std专题

C++面试八股文:std::deque用过吗?

100编程书屋_孔夫子旧书网 某日二师兄参加XXX科技公司的C++工程师开发岗位第26面: 面试官:deque用过吗? 二师兄:说实话,很少用,基本没用过。 面试官:为什么? 二师兄:因为使用它的场景很少,大部分需要性能、且需要自动扩容的时候使用vector,需要随机插入和删除的时候可以使用list。 面试官:那你知道STL中的stack是如何实现的吗? 二师兄:默认情况下,stack使

浅析std::ref

目录 1 为什么需要std::ref 2 std::ref使用示例 2.1 std::thread调用 2.1.1 不使用std::ref,编译失败 2.1.2 使用std::ref修饰输入变量 2.2 stl库调用(以for_each 为例) 2.3 std::bind 2.3.1 使用std::ref 2.3.2 使用placeholders::_x同样可以达到同样效果 3

C++ std::vector 的 emplace_back 能否完全取代 push_back

区别: push_back:先在调用处构造一次 class,传递进 push_back 内后再进行拷贝到缓冲区。 emplace_back:在内部直接将构造 class 的参数转发构造到缓冲区。   如果以上说法不好理解,那么用代码来表示。 // 该 Class 支持隐式构造class Class{public:Class(int a) : _a(a) {}int _a;};ve

std :: this_thread

this_thread 包装了一组可以访问当前线程信息的函数 functions 1、get_id()      获取当前线程的id。 // thread::get_id / this_thread::get_id#include <iostream> // std::cout#include <thread> // std::thread, std

std :: thread

头文件<thread>中包含两个类,thread和this_thread 在讲thread之前,首先要了解线程的一个状态:joinable 一个正规初始化后的线程是一个可执行线程,这种线程joinable为true,并且有一个独一无二的线程id。 相反,一个默认构造函数构造出的thread(thread(),没有参数,未初始化),joinable为false,且线程id通常和其他所有的non

C++之std::condition_variable::wait_for

std::condition_variable::wait_for 是 C++11 引入的条件变量的一部分,用于在一定时间内等待通知。它是 std::condition_variable 类的成员函数之一,可以使线程在等待某条件变为真时,最多等待指定的时间段。 使用方法 在 std::condition_variable 中,wait_for 的主要形式如下: cpp template

C++基础std::bind

目录   说明 举例子: 说明 std::bind是一个函数模板,用于创建一个可调用对象,该对象可以在稍后的时候被调用。bind的作用是将函数与参数绑定在一起,在调用时可以自动传入预定的参数值。 std::bind的基本语法如下: template< class F, class... Args> /unspecified/ bind( F&& f, Args&&... arg

c++参考std::string自己设计类hstring

目录 一、前言 二、设计需求 三、设计思想 1.功能一 1.功能二 四、设计过程 1.类hstring搭建 2. 实现有参构造函数 3. 实现副本构造函数 4.完整代码 五、结束语 一、前言         在c++中有很多的库,但是在有些时候呢,我们一定要学会自己去设计库,不要老用别人的东西,比方说这个东西方便吗?特别方便。但是这个东西呢,有很大的副作用。

ROS std_msgs消息包

ROS std_msgs消息包 基本概述 std_msgs 是 ROS(Robot Operating System)的一个核心消息包,包含了一系列基本的消息类型,这些类型用于节点之间的标准通信。std_msgs 中的消息类型设计得非常简单,以便用作更复杂消息的构建块或用于简单的数据传输。以下是一些 std_msgs 中定义的消息类型和它们的用途: 基本数据类型 Bool: 表示布尔值,即

【C++11】深入剖析lambda仿函数的原理,自己动手实现std::function容器

文章目录 参考 参考 【C++11】深入剖析lambda仿函数的原理,自己动手实现std::function容器实现自定义的Function

std::vector使用要点总结

一、std::vector的6种初始化方式 1、vector ilist1; 默认初始化,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。 2、vector ilist2(ilist); vector ilist2 = ilist; 两种方式等价 ,ilist

手写单向队列性能秒杀std::queue

std::queue即单向队列,是一种先入先出的FIFO队列。具有以下特点: 只允许从队尾插入元素,从队头删除元素先进先出(First In First Out)不允许在中间部位进行操作 一共6个函数front()、back()、push()、pop()、empty()、size(),自己手写实现,也是比较简单的。 接下来, 我们就手写实现一个定制的queue队列,然后将其与std::que

C++初学者指南第一步---5.介绍std::vector

C++初学者指南第一步—5.介绍std::vector 目录 C++初学者指南第一步---5.介绍std::vector1.初始化/访问2.添加元素3.Resizing调整大小4.在尾部删除元素5. 复制一直是深拷贝! 注意std代表C++标准库的命名空间,vector(向量)是标准库中的一种数据容器:动态数组,用vector向量这个名称不太准确,因为历史原因一直保留下来,适应

C++ 20新特性之std::span

💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。 为什么要引入std::span         在C++中,我们经常需要传递数组或容器的一部分给函数进行处理。通常的做法是使用指针和长度来表示数组的一部分,但这可能导致越界和难以维护的代码。C++ 20中新引入的std::span,则提供了一种更安全、更直观的方式来处理这种情况。

【Pandas驯化-03】Pandas中常用统计函数mean、count、std、info使用

【Pandas驯化-03】Pandas中常用统计函数mean、count、std、info使用   本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 相关内容文档获取 微信公众号 🎇 相关内容视频讲解 B站 🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利

C++11实现线程安全的单例模式(使用std::call_once)

个人联系方式:微信 1. 饿汉模式 使用饿汉模式实现单例是十分简单的,并且有效避免了线程安全问题,因为将该单例对象定义为static变量,程序启动即将其构造完成了。代码实现: class Singleton {public:static Singleton* GetInstance() {return singleton_;}static void DestreyInstance() {i

std::forward_list

http://classfoo.com/ccby/article/5wWLx // <forward_list>template < class T, class Alloc = allocator<T> > class forward_list; 正向列表(Forward list)是一个允许在序列中任何一处位置以常量耗时插入或删除元素的顺序容器(Sequence conta

C++11中的std::function,Lambda表达式

转载地址: std::function: http://www.jellythink.com/archives/771 Lambda表达式 http://www.jellythink.com/archives/668 http://www.cnblogs.com/DswCnblog/p/5629165.html http://blog.csdn.net/u010525694/ar

C++并发之条件变量(std::condition_variable)

目录 1 概述2 使用实例3 接口使用3.1 wait3.2 wait_for3.3 wait_until3.4 notify_one3.5 notiry_all3.5 notify_all_at_thread_exit 1 概述   条件变量是一个能够阻塞调用线程直到被通知恢复的对象。   当调用其中一个等待函数时,它使用unique_lock(通过互斥锁)来锁定线程。线程保

std::size_t

size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件stddef.h的C++版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。 例如:bitset的size操作返回bitset对象中二进制位中的个数,返回值类型是size_t。 例如:在用下标访问元素时,vector使用vector::size_type作为下标类型,而数组下标的

C++14 新特性:std::make_unique 和 constexpr

今天介绍的 std::unique_ptr 和 constexpr的用法比较简单,所以放到一篇文章中进行介绍。 1、std::make_unique 首先来看 std::unique_ptr,在 C++11 中引入了智能指针和std::unique_ptr,为资源管理提供了更安全、更简洁的手段。但是 C++11 缺少了一个直接创建std::unique_ptr实例的便捷方式。 到了 C++1

C++基础 std::find以及扩展

1.std::find 是C++标准库中的一个通用查找算法,用于在给定范围内查找指定元素。它接受两个迭代器作为参数,分别表示搜索范围的起始和结束位置。如果找到指定元素,则返回指向该元素的迭代器;否则,返回指向搜索范围末尾的迭代器。 // 原型template< class InputIt, class T >constexpr InputIt find( InputIt first,

C++ STL std::map的实现机制【面试】

基于红黑树:std::map 利用红黑树的数据结构来存储数据,确保了操作的平衡性和效率。 自动排序:红黑树保证了元素的有序性,即元素会根据键自动排序。 唯一键值:每个键都是唯一的,如果尝试插入重复的键,新值会覆盖旧值。 时间复杂度:基本操作(插入、删除、查找)的时间复杂度为 O(log n),其中 n 是元素的数量。 迭代器支持:提供双向迭代器,方便遍历容器。 灵活的比较器:允许用户定

C++笔记之一个函数多个返回值的方法、std::pair、std::tuple、std::tie的用法

C++笔记之一个函数多个返回值的方法、std::pair、std::tuple、std::tie的用法 —— 2024-06-08 杭州 code review! 文章目录 C++笔记之一个函数多个返回值的方法、std::pair、std::tuple、std::tie的用法一.从一个函数中获取多个返回值的方法1. 使用结构体或类2. 使用`std::tuple`3. 使用

C++11:列表初始化 初始化列表initializer_list decltype关键字 左值右值 std::move

目录 前言 列表初始化 初始化列表initializer_list decltype关键字 左值和右值 move 前言         2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字取代了C++98成为了C++11前最新的C++标准名称。不过由于C++03主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的

std::map 删除指定条件的元素

欢迎关注公众号可以查看更多完整文章 在C++开发中,std::map是经常使用到的容器,由键值就可以取出对应的值。 在使用map时,如果想从map中删除符合某一条件的元素,应该如何操作? 我自己刚开始使用erase从迭代器中移除符合我需要删除条件的键值对时,出错了: #include <stdio.h>#include <map>int main(){std::map<i