首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
首页 /
STL
#
STL
#
4007次浏览
13人互动
收藏话题
分享
此刻你想和大家分享什么
热门
最新
2023-06-24 09:01
已编辑
四川大学 嵌入式软件开发
STL 源码剖析 -- Iterator 迭代器全揭秘
1、iterator_tagiterator_tag 标记了 iterator 的类型。 /// Marking input iterators. struct input_iterator_tag { }; /// Marking output iterators. struct output_iterator_tag { }; /// Forward iterators support a superset of input iterator operations. struct forward_iterator_tag : public input_ite...
C/C++基础
点赞
评论
收藏
分享
2023-07-16 10:38
四川大学 嵌入式软件开发
C++ STL 容器设计实现 -- deque
5、dequedeque 是双端队列(double-ended queue),其实现比较特殊,有多段地址连续的存储空间组成,整理布局如下:每段地址连续内存成为一个 nodemap 是指针构成的数据,每个元素指向一个 nodestart 和 finish 是一个迭代器变量,分别指向第一个和最后一个 node迭代器以 node 为单位cur 指向当前元素first 指向 node 第一个元素last 指向 node 最后一个元素的下一个地址node 指向 map 中相应位置,可以很方便找到前一个或者后一个 nodenode 计算如下元素占用内存小于 512 字节,最大占用 512 字节否则,默认分...
C/C++基础
点赞
评论
收藏
分享
2023-07-16 10:15
四川大学 嵌入式软件开发
C++ STL 容器设计与实现分析 -- list
3、listlist 是双向链表实现。双向链表结点在堆上动态申请,插入和删除操作不存在移动元素的操作。3.1、_List_nodelist 中每个结点都用 _List_node 表示,继承于 _List_node_base。_List_node 成员 _M_storage,用于保存数据。 /// stl_list.h /// An actual node in the %list. template<typename _Tp> struct _List_node : public __detail::_List_node_base { #if __cplus...
C/C++基础
点赞
评论
收藏
分享
2023-06-24 09:23
已编辑
四川大学 嵌入式软件开发
STL 源码剖析 -- Allocator 内存分配全揭秘
1、std::allocator操作符 new 申请内存成功后,调用构造函数初始化内存。另外一种申请内存的方法是调用 operator new() 函数,该函数只申请内存,不执行构造函数。 #include <iostream> class Foo { public: Foo() { std::cout << "Foo::ctor" << std::endl; } ~Foo() { std::cout << "Foo::dtor" << std::endl; } }; int main() { { std::...
C/C++基础
点赞
评论
收藏
分享
2023-06-26 21:41
四川大学 嵌入式软件开发
C++ STL 容器设计与实现分析 -- vector
2、vectorvector 属于动态数组,自动控制存储空间,根据需要进行扩展和收缩。通常拥有额外的空间以处理未来的增长,这样,每次插入元素时,不需要每次重新分配内存,仅在附加内存耗尽时才重新分配。可使用 capacity() 查看分配的内存总量,也可以调用 shrink_to_fit() 将额外的内存返回给系统。如果事先知道元素数量,可调用 reserve(n) 一次性分配内存。vector 继承于 _Vector_base,_Vector_base 只有一个 _Vector_impl 类型的成员变量。 template<typename _Tp, typename _Alloc&...
C/C++基础
点赞
评论
收藏
分享
2023-05-22 15:57
门头沟学院 C++
std::invoke,通用的函数调用器
std::invoke 是 C++17标准库中引入的一个函数模板,用于统一地调用可调用对象(函数、函数指针、成员函数指针、仿函数等)。它解决了在 C++ 中调用可调用对象的一致性和灵活性问题。 在之前的 C++ 版本中,要调用不同类型的可调用对象,需要使用不同的语法,例如使用函数调用运算符 () 来调用函数或函数指针,使用成员访问运算符 -> 或 . 来调用成员函数。这样的语法差异导致了代码的冗余和不一致,给编写和维护代码带来了困扰。 std::invoke 的引入就是为了解决这个问题,它提供了一种统一的调用语法,无论是调用函数、函数指针、成员函数指针还是仿函数,都可以使用相同的方式进行...
点赞
评论
收藏
分享
2023-07-16 10:28
四川大学 嵌入式软件开发
C++ STL 容器设计实现 -- forward_list
4、forward_list (C++11)forward_list 是 C++11 引入的单链表数据结构。4.1、_Fwd_list_node首先是 forward_list 链表结点。_Fwd_list_node 继承于 _Fwd_list_node_base,成员 _M_storage 保存用户数据,_M_valptr() 函数返回 _M_storage 的地址。 /// forward_list.h template<typename _Tp> struct _Fwd_list_node : public _Fwd_list_node_base ...
C/C++基础
点赞
评论
收藏
分享
2023-06-26 21:34
四川大学 嵌入式软件开发
C++ STL 容器设计与实现分析 -- array
1、array(C++11)array 是固定长度的数组,定义时就指定长度,一旦定义长度不能更改(不能扩容)。 template<typename _Tp, std::size_t _Nm> struct array { typedef _Tp value_type; typedef value_type* pointer; typedef const value_type* const_point...
C/C++基础
点赞
评论
收藏
分享
2024-08-25 16:34
宜春学院 C++
题解 | #线段重合#
#include <iostream> #include <queue> #include <algorithm> using namespace std; int n; struct line { int l; int r; }lin[100005];//用结构体存储线段,方便排序 bool cmp(line l1,line l2)//按线段左端点升序排序 { return l1.l < l2.l; } int main() { cin>>n; for(int i=0;i<n;i++) cin>>li...
牛客竞赛题解
点赞
评论
收藏
分享
2023-05-06 15:37
已编辑
C++ STL容器和算法:详解和实例演示
C++ STL(标准模板库)提供了一组丰富的容器和算法,使得开发者能够更加高效地编写程序。本文将介绍STL中的一些常用容器和算法。容器vectorvector是一个动态数组,可以在运行时调整大小。它的优点在于可以快速地访问元素,缺点是在插入和删除元素时需要移动后面的元素。 #include <vector> #include <iostream> using namespace std; int main() { vector<int> v; v.push_back(1); v.push_back(2); v.push_b...
C++编程指南:从入门到...
点赞
评论
收藏
分享
提到的真题
返回内容
玩命加载中
创作者周榜
更多
热议话题
更多
1
...
2025开工大吉
0
2
...
米哈游求职进展汇总
0
3
...
来选选带哪个offer回家过年
0
4
...
晒一晒你们公司的年会奖品
0
5
...
Offer比较,求稳定还是求发展
0
6
...
你后悔选择现在的专业吗
0
7
...
聊聊我眼中的AI
0
8
...
Offer比较,你最看重什么?
0
9
...
机械人面试中的常问题
0
10
...
如果可以,你希望哪个公司来捞你
0
牛客网
牛客企业服务