c++11 动态内存管理-提供关于分配器类型的信息(std::allocator_traits)(四)

提供关于分配器类型的信息

std::allocator_traits

template< class Alloc >
struct allocator_traits;

(C++11 起)

allocator_traits 类模板提供访问分配器 (Allocator) 各种属性的标准化方式。标准容器和其他标准库组件通过此模板访问分配器,这使得能以任何类类型为分配器,只要用户提供的 allocator_traits 特化实现所有要求的功能。

返回分配器所支持的最大对象大小

std::allocator_traits<Alloc>::max_size

static size_type max_size( const Alloc& a ) noexcept;

(C++11 起)

若可能,则通过调用 a.max_size() ,从 a 获得最大理论可行的分配大小。

若上述行为不可行(例如 a 无成员函数 max_size() ),则返回 std::numeric_limits<size_type>::max() (C++17 前)std::numeric_limits<size_type>::max() / sizeof(value_type) (C++17 起)

参数

(无)

返回值

理论最大分配大小

获得复制标准容器后使用的分配器

std::allocator_traits<Alloc>::select_on_container_copy_construction

static Alloc select_on_container_copy_construction( const Alloc& a );

(C++11 起)

若可能,则获得分配器 a 的赋值构造函数版本,通过调用 a.select_on_container_copy_construction() 。若上述不可行(例如 a 无成员函数 select_on_container_copy_construction() ),则返回不修改的 a 。

此函数为所有标准库容器的复制构造函数所调用。它允许构造函数参数所用的分配器为正在复制的容器所具备,并在需要的情况下修改状态。

参数

a-标准容器用以传递给容器复制构造函数的分配器

返回值

复制构造的标准容器所用的分配器。

调用示例

#include <iostream>
#include <memory>struct Cell
{int x;int y;Cell(){std::cout << __FUNCTION__;}Cell(int a, int b): x(a), y(b){std::cout << __FUNCTION__;}~Cell(){std::cout << __FUNCTION__;}bool operator ==(const Cell &cell) const{return x == cell.x && y == cell.y;}bool operator <(const Cell &cell) const{if (x < cell.x){return true;}return y < cell.y;}
};std::ostream &operator<<(std::ostream &os, const Cell &cell)
{os << "{" << cell.x << "," << cell.y << "}";return os;
}int main()
{//若可能,则通过调用 a.max_size() ,从 a 获得最大理论可行的分配大小。//若上述行为不可行(例如 a 无成员函数 max_size() ),//则返回 std::numeric_limits<size_type>::max() (C++17 前)//std::numeric_limits<size_type>::max() / sizeof(value_type) (C++17 起)std::allocator_traits<std::allocator<char>> allocator_traitsChar;std::cout << "std::allocator_traits<std::allocator<char>> max_size:  "<< allocator_traitsChar.max_size(std::allocator<int>()) << std::endl;std::allocator_traits<std::allocator<int>> allocator_traitsInt;std::cout << "std::allocator_traits<std::allocator<int>> max_size:  "<< allocator_traitsInt.max_size(std::allocator<int>()) << std::endl;std::allocator_traits<std::allocator<uint32_t>> allocator_traitsUInt;std::cout << "std::allocator_traits<std::allocator<uint32_t>> max_size:  "<< allocator_traitsUInt.max_size(std::allocator<uint32_t>()) << std::endl;std::allocator_traits<std::allocator<long>> allocator_traitsLong;std::cout << "std::allocator_traits<std::allocator<long>> max_size:  "<< allocator_traitsLong.max_size(std::allocator<long>()) << std::endl;std::allocator_traits<std::allocator<double>> allocator_traitsDouble;std::cout << "std::allocator_traits<std::allocator<double>> max_size:  "<< allocator_traitsDouble.max_size(std::allocator<double>()) << std::endl;std::allocator_traits<std::allocator<Cell>> allocator_traitsCell;std::cout << "std::allocator_traits<std::allocator<Cell>> max_size:  "<< allocator_traitsCell.max_size(std::allocator<Cell>()) << std::endl;return 0;
}

输出

std::allocator_traits<std::allocator<char>> max_size:  4294967295
std::allocator_traits<std::allocator<int>> max_size:  1073741823
std::allocator_traits<std::allocator<uint32_t>> max_size:  1073741823
std::allocator_traits<std::allocator<long>> max_size:  1073741823
std::allocator_traits<std::allocator<double>> max_size:  536870911
std::allocator_traits<std::allocator<Cell>> max_size:  536870911

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

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

相关文章

无监督学习(上)

我们实际用到的项目大都是有监督的&#xff0c;而人工智能未来的一大难点将会是无监督学习。在前面说过的降维算法&#xff0c;大部分都是无监督&#xff0c;除了LDA。 无监督算法有聚类&#xff0c;密度估计&#xff0c;常常用在做分类或者异常检测上。 一.聚类 聚类就是识…

机器学习分类

1. 监督学习 监督学习指的是人们给机器一大堆标记好的数据&#xff0c;比如&#xff1a; 一大堆照片&#xff0c;标记出哪些是猫的照片&#xff0c;哪些是狗的照片 让机器自己学习归纳出算法或模型 使用该算法或模型判断出其他没有标记的照片是否是猫或狗 上述流程如下图所…

docker 部署 个人网页版 wps office

先声明一下&#xff0c;这个是用的linux桌面&#xff0c;然后安装了一个wps软件 安装好之后&#xff0c;通过我们自己的浏览器进行操作。。。。。 我只是试了一下&#xff0c;目前发现只能一个人用&#xff0c;里面还有谷歌浏览器&#xff0c;就是一个远程linux桌面 docker …

2023中国企业级存储市场:整体韧性成长,领域此消彼长

多年之后回头看&#xff0c;2023年也许是中国企业级存储市场标志性的一年。 后疫情时代的开启&#xff0c;中国数字经济快速发展、数据产业方兴未艾&#xff0c;为数据存储市场带来了前所未有的活力&#xff1b;与此同时&#xff0c;外部环境的不确定性骤增&#xff0c;人工智…

Qt+Opencv:人脸检测

话接上一篇&#xff0c;我们仍使用在上篇《QtOpencv&#xff1a;Qt中部署opencv》创建的Qt项目来测试opencv提供的sample。 在正式开始本篇之前&#xff0c;我们先说做一下准备工作&#xff1a; 一、opencv官方文档 学习最权威和最可靠的方式&#xff0c;就是阅读官方文档和…

大数据与人工智能|万物皆算法(第三节)

要点一&#xff1a;数据与智能的关系 1. 一切的核心都是数据&#xff0c;数据和智能之间是密切相关的。 数据是对客观现实的描述&#xff0c;而信息是数据转化而来的。 例如&#xff0c;24是数据&#xff0c;但说“今天的气温是24摄氏度”是信息&#xff0c;而说“班可以分成24…

【51单片机系列】DS18B20温度传感器扩展实验之设计一个智能温控系统

本文是关于DS18B20温度传感器的一个扩展实验。 文章目录 一、相关元件介绍二、实验分析三、proteus原理图设计四、软件设计 本扩展实验实现的功能&#xff1a;利用DS18B20设计一个智能温度控制系统&#xff0c;具有温度上下限值设定。当温度高于上限值时&#xff0c;电机开启&a…

BDTC2023:CloudberryDB开源创新与实践

中国大数据技术大会&#xff08;BDTC&#xff09;由中国计算机学会&#xff08;CCF&#xff09;创立于2008年&#xff0c;已经成为国内外极具行业实践的专业大数据交流平台。12月22日-24日&#xff0c;第十七届中国大数据技术大会&#xff08;BDTC 2023&#xff09;在广州举行。…

【Bootstrap学习 day2】

Bootstrap5排版 使用标题标签<h1>-<h6> 可以使用类.h1-.h6来设置标题 <div class"container"><p class"h1">h1 Bootstrap 标题</p><p class"h2">h2 Bootstrap 标题</p><p class"h3"&g…

创建加密分区或者文件

文章目录 [GParted 中已清除的分区与未格式化的分区](https://superuser.com/questions/706624/cleared-vs-unformatted-partition-in-gparted)创建加密分区解密创建的加密分区以便挂载格式化设备未具体的格式&#xff08;这里为ext4格式&#xff09;创建挂载点目录挂载加密的文…

多值类别特征加入CTR预估模型的方法

欢迎关注公众号&#xff1a;数据运营入表资产化服务 获取更多算法源码材料 2023数据资源入表白皮书&#xff0c;推荐系统源码下载-CSDN博客 用友BIP数据资产入表解决方案白皮书&#xff0c;推荐系统源码下载-CSDN博客 我们都知道一般单值类别特征加入到CTR预估模型的方法是先…

安装Node修改Node镜像地址搭建Vue脚手架创建Vue项目

1、安装VSCode和Node 下载VSCode Visual Studio Code - Code Editing. Redefined 下载Node Node.js (nodejs.org) 检验是否安装成功&#xff0c;WinR,输入cmd命令&#xff0c;使用node -v可以查看到其版本号 2、修改镜像地址 安装好node之后&#xff0c;开始修改镜像地址 …

如何实现内部产品权限集成

当前我国各领域正在加速向数字化、移动化、智能化发展&#xff0c;大力投入信息化建设与数字化转型已成为企业的共识&#xff0c;而企业门户系统是企业信息化系统建设是一个重要支撑&#xff0c;以企业业务系统为基础&#xff0c;搭建门户系统作为统一入口和应用中心可以有效支…

ssrf之dict协议和file协议

1.dict协议 dict是什么协议呢&#xff1f; 定义&#xff1a;词典网络协议&#xff0c;在RFC 2009中进行描述。它的目标是超越Webster protocol&#xff0c;并允许客户端在使 用过程中访问更多字典。Dict服务器和客户机使用TCP端口2628。 官方介绍&#xff1a;http://dict.o…

计算机毕业设计 基于SpringBoot的高校危化试剂仓储管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

k8s部署metric-server单机、集群版

### 一、单机部署 #### 1.1、下载metric-server https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml #### 1.2、替换镜像并修改参数 ... spec: containers: - args: - --cert-dir/tmp - --secur…

iPhone 13 Pro 更换『移植电芯』和『超容电池』体验

文章目录 考虑换电池Ⅰ 方案一Ⅱ 方案二 总结危险 Note系列地址 简 述: 首发买的iPhone 13P &#xff08;2021.09&#xff09;&#xff0c;随性使用一年出头&#xff0c;容量就暴跌 85%&#xff0c;对比朋友一起买的同款&#xff0c;还是95%。这已经基本得一天两充 >_<&a…

Element Plus 的 el-table 组件合并不规律的行

在 Element Plus 的 el-table 组件中&#xff0c;可以使用 span-method 属性来动态合并不规律数量的行。您可以根据数据的特定条件来确定合并行的方式 <template><el-table :data"tableData" :span-method"handleSpanMethod" border><el-t…

【计算机视觉】角点检测(Harris、SIFT)

Harris 角点指的是窗口延任意方向移动&#xff0c;都有很大变化量的点。 用数学公式表示为&#xff1a; E(u,v)反映的移动后窗口的差异&#xff0c;w(x,y)为每个像素的点权值&#xff0c;I(xu,yv)是移动的像素值&#xff0c;I(x,y)是移动前的像素值。 将E(u,v)进行泰勒展开&am…

Sql中的like的用法

Sql中的like的用法 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一起深入探讨SQL中一个强大而灵活的条件查询操作——LIKE关键字的用法。作…