「STL::array」标准库容器:array(数组)介绍(C++)

C++教程之array 上一篇文章我们介绍了C++中的迭代器,这篇文章将会介绍C++中数组的概念,数组是一种和vector类似的数据结构,但是其在性能和灵活性上的权衡中选择了性能而放弃了一定的灵活性,其与vector相同的地方是,它们都是同一类型的对象的容器,也都可以通过下标访问。其不同点是数组的大小是固定的,所以无法向一个数组添加元素,也正是因为其大小固定,所以其在运行时有更好的性能。需要注意的是一些编译器是不支持数组的拷贝,如果直接通过一个数组去初始化另一个数组可能会报错。在理解声明时可以按照从左到右,从内到外的顺序。 阅读详情

概述

我们知道,C语言提供的以[]表示的数组在作为参数传入函数时会退化为指针,因此想要传入数组长度信息,通常需要额外传参。有没有什么方法解决这一问题呢?

array 是一种C++标准模板库STL中定义的一种序列容器,它提供了对数组的初步封装。

template <class T,std::size_t N>
struct array;

array 是基于数组的数据结构,只封存了栈数组(这是它与堆数组vector的显著区别),这决定了它不是动态的,但具有良好的访问速度,实际上,它与[]原生数组是等价的,只不过作为参数时不会退化。

它同时具有原生数组的所有特性:

连续存储:元素在内存中是连续存储的,这使得访问元素非常快速。

可迭代:可以被迭代,你可以使用循环来访问它的元素。

元素容器:可以存储任何类型的元素,包括基本类型、对象、指针等。

接下来,我们介绍array类型定义的成员函数。

*注意*:本文不涉及allocator空间配置器和C++23新增的range类函数。

创建销毁

STL库提供了以下方式创建一个array。

以T表示任意类型,以size_t N表示数组长度(size_t也即无符号整数)。

聚合初始化

 

隐式声明

array完全仿照原生数组,因此初始化时隐式声明的。

这意味着你可以完全以原生数组的方式初始化它。

array<T,N>arr={};代表构建长度为N的数组,全为0。

array<T,N>arr={1,2,3};代表构建长度为N的数组,前三个元素为1,2,3。

同样的,

array<T,N>arr;与T arr[N];是相同的,两者内部都是未初始化的垃圾元素。

析构函数

隐式声明

与原生数组完全等价的消亡机制。


赋值重构

在必要时我们会对array进行重构。

重载拷贝赋值=

隐式声明

完全等效于结构体赋值。即以来自另一 array 的每个元素重写 array 的对应元素

(struct赋值=会将依次复制其中一个struct到另一struct,数组也不例外。)


数据访问

array同时提供了类形式的函数访问和数组形式的运算符访问。

重载[]号访问

operator[](int pos);

模仿原生数组的数据访问形式,如arr[3]=5;

成员函数式访问

at(int pos);

返回pos处元素的引用。它与[]号相同,但会检查越界。

访问头元素

front();

返回头元素。

访问尾元素

back();

返回尾元素。

直接访问底部

data();

返回array维护的栈数组的头地址。


迭代器

迭代器是c++STL库提供的指向容器的类型,有着类似指针的作用。

在此处,array的迭代器几乎与原生数组的指针无异。

通常定义arrat<T>::iterator it=.....来获得一个指向array某处的it迭代器。

头位置

begin();

返回头位置(vector第一个元素的位置,vector为空时和end相等)。

尾位置

end();

返回尾位置。(它指向的位置是第一个不属于vector的位置而不是vector的最后一个元素。)

常量头位置

cbegin();

 

返回头位置,赋值给const_iterator类型。这种迭代器不可修改容器。

常量尾位置

cend();

返回常量尾位置。

逆序头位置

rbegin();

返回逆序头位置,赋值给reverse_iterator类型。指向最后一个元素(与end不同),对逆序迭代器的++操作会使其向头部移动,--向尾部移动(与正序相反)

逆序尾位置

rend();

返回逆序尾位置,指向vector前面的那个不属于vector的位置(与front不同)

常量逆序头位置

crbegin();

返回常量逆序头位置,赋值给const_reverse_iterator类型。

常量逆序尾位置

crend();

返回常量逆序尾位置。


内存管理

保持原生数组内存可知是stl封装array的主要目的之一。

判断是否为空

empty();

size==0时返回true,否则返回false。

获取实际长度

size();

返回N。

获取最大长度

max_size();

依旧返回N。(因为栈数组可用的最大长度就是它的实际长度)


数据控制

array类型支持通过成员函数维护数据。

填充

fill(const T& target);

将数组元素全部修改为target。

交换

swap(array& another);

交换两个容器的元素。


Tips

array<T,0>,零长数组是有意义的,

在msvc平台(visual studio等),对于array<T,0>具有一个偏特化,对他的任何读取行为都是违法的,非读取的成员函数则是一个空函数。

 

C++, STL容器 array:固定大小数组深度解析 在C++标准库中,std::array是一个长期被低估的容器。作为C++11引入的现代特性,它完美融合了传统C数组的性能优势和STL容器的安全性。本文将深入探讨其设计原理,并结合实际场景分析其在内存优化中的独特价值。 阅读详情

相关推荐

数据结构与算法分析(二)--- STL简介 + 线性表容器(C++11)

STL是由一些可适应不同需求的集合类和一些能够在这些数据集合上运作的算法构成,STL内的所有组件都由模板构成,所以其元素可以是任意类型。STL组件包括以下部分: - 容器(container):用来管理某类对象的集合,容器可以是array、list、set、map等; - 迭代器(iterator):用来在一个对象集合内遍历元素,这个对象集合或许是个容器,或许是容器的一部分; - 算法(algorithm):用来处理集合内的元素,它们可以出于不同的目的而增、删、改、查、排序、使用元素。

流云 2902

【STL】C++ STL之array详解

c++ STL之array详解

行码棋 2万+

AD24-层次原理图的设计

4)在原理图关联对话框中双击需要放置方块图的子图,即激活方块图的放置,单击母图的空白处进行放置。3)设计-Create Sheet From Sheet,进入原理图关联对话框。4)放置-添加图纸入口,放置方块图的内部I/O端口并进行名称更改。2)放置-页面符,放置页面符,并执行Table完成属性设置。5)执行Ctrl+W,端口和内部I/O端口对应连接。1)创建一个工程并完成子图的每页原理图的设计。1)新建项目,创建Main原理图页。3)放置-的端口,放置方块图的端口。以上,就是层次原理图页的设计。

qq_52761962的博客 4919

array详解

array详细介绍

m0_59666413的博客 4929

hi3519dv500 os04a10输入调试

因该sensor接在soc端的iic6,在驱动中(Hi3519DV500_SDK_V2.0.1.1\smp\a55_linux\source\mpp\cbb\isp\user\sensor\hi3519dv500\omnivision_os04a10\os04a10_sensor_ctl.c)注意总线的选择。mem_process_isolation=1 改为 mem_process_isolation=0。2、OT_MIPI_SET_HS_MODE配置为LANE_DIVIDE_MODE_1。

linus 3165

怎么在豆包里做生成式引擎优化(GEO)

本文系统介绍了豆包平台生成式引擎优化(GEO)的全套方法体系。文章首先解析了豆包与传统搜索引擎的核心差异,强调其多模态理解和上下文感知特性,并指出GEO需从关键词匹配转向用户意图动态解析。随后详细阐述了GEO优化的三大核心策略:用户意图解析技术、实时内容适配框架和权威信号强化方法,配以技术实现路径和案例说明。最后提出GEO与SEO融合的未来趋势,建议企业构建统一知识库,实现全渠道声誉管理。全文包含大量实操代码和工具链指导,为企业在AI时代的内容优化提供系统解决方案。

解锁AI流量新红利!🚀 GEO优化(生成引擎优化)助您掌控AI搜索,让AI成为您的品牌最佳代言人! 2375

C++数据结构——array、vector、链表

一、 array模板类 C++中的数组类型是继承了c语言的特性,在使用数组的时候要注意数组越界操作问题。为了更安全的对数组进行操作,C++提出了数组模板类array。array内存空间为连续的一段地址,适用于提前已知所要存储的数据类型和数量、进行大量的查、改操作,不适用于含有大量交换、删除、增加数据的操作,该容器无法动态改变大小,所以说提前已知存储数据类型和数量。 1、array模板...

知识搬运工的博客 6625

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2023 FasterNet 高效快速的部分卷积块

本文记录的是基于FasterNet的YOLOv11轻量化改进方法研究。FasterNet的网络结构借鉴 CNN 的设计理念,通过提出的PConv减少推理时的计算和内存成本,同时减少通道数并增加部分比例,降低延迟,并通过后续的PWConv来弥补特征信息可能缺失的问题,提高了准确性。本文在替换骨干网络中配置了原论文中的和六种模型,以满足不同的需求。

Limiiiing的博客 2029

C++ array函数

c++ STL

weixin_59141600的博客 1万+

华为OD机考双机位A卷 - 开心消消乐(Java & Python& JS & C/C++ & GO )

华为OD机考双机位A卷 - 开心消消乐(OD上机考试双机位A卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 1268

Detector-Free SfM 项目复现完整指南:从环境搭建到代码解析与可视化

本文提供了Detector-Free SfM项目的完整复现指南,涵盖技术背景、环境配置、代码解析和可视化方案。重点包括: 技术背景:Detector-Free SfM通过两阶段策略(粗重建+迭代精化)解决了传统SfM在弱纹理区域的瓶颈问题,采用深度学习匹配器替代传统特征点检测。 环境配置: 详细硬件要求与推荐配置(GPU/CPU/内存) 完整的Ubuntu系统设置步骤 Conda环境创建与依赖安装流程 关键组件安装指南(PyTorch、COLMAP等) 常见错误解决方案 项目特点: 支持多种Detector

huanghm88的专栏 121

c++ 中的容器 vector 与数组 array

当初自学 c++ 与 c 语言时,一直被指针弄的云里雾里。后来 c++ 中引入了容器,避免了指针。但是,一些教材把容器的章节放在书本中后面的章节,太不合理。应该把这种方便的功能放到前面,这样一些初学者就不会遇到太多生硬难懂的知识点从而对这个语言望而却步了。让 AI 总结了相关知识点,方便自己以后查阅。

天天向上的专栏 1346

华为OD机试 - 停车场费用统计 - HashSet(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。停车场统计当日总收费,包月的车不统计,不包月的车半个小时收一块钱,不满半小时不收费,如果超过半小时,零头不满半小时按半小时算,每天11:30-13:30时间段不收费,如果一辆车停车时间超过8小时后不收费。现提供停车场进出车辆的统计信息,需要你来计

学Java,找哪吒 238

为什么说C++ 的序列容器 array 是 C 数组的一个更好的替代品? |直播分享实录

3 月 27 日晚 8 点(昨晚),著名 C++专家吴咏炜,Boolan 首席咨询师在线开讲《C++ 序列容器》,精彩实战的干货分享,引来不少开发者基于实际开发场景的真实提问与答疑。为此,笔者将昨晚公开课的部分视频内容整理成文,分享给更多的技术爱好者。*扫描小助手二维码获取回放视频C 数组的更“好”替代品 arrayC++ 的序列容器 array 是 C 数组的一个更好的替代品。首先,它在性能方...

优快云资讯 3624

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

c++stl和std_C ++ STL数组容器– std :: array

Here you will learn about STL Array Container in C++ i.e.std::array. 在这里,您将了解C ++中的STL数组容器,即std :: array。 I Hope you know about C-type arrays (arrays in C language). Since C++ is just extension to ...

culing2941的博客 729

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

「C/C++」C++ STL容器库 之 std::array数组容器

std::array是一个简单而强大的容器,特别适用于需要固定大小数组的场景。它提供了比原生数组更多的功能和更高的安全性,包括边界检查、迭代器支持和元素比较等。通过本文的解析,相信你对std::array有了更深入的了解,并能够在实际编程中灵活运用它。

何曾参静谧的博客 1494

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C++(标准库):13---STL容器之(序列式容器array)

一、序列式容器概述 关于STL容器的总体介绍,可以参阅:https://blog.youkuaiyun.com/qq_41453285/article/details/105482769 STL内部预先定义好的序列式容器有: array:在固定大小的array内管理元素 基础语法参阅:https://blog.youkuaiyun.com/qq_41453285/article/details/10548310...

董哥的黑板报 1381

C++ STL标准库容器 概览

前言 本文对C++中的STL标准库容器进行概览,作为笔者平时的学习笔记,以兹备忘。同时,本文作为一个目录,接下来对常用容器,比如vector,map等的 具体介绍的博文将会由本文进行索引。 C++的标准容器库中提供了一系列的容器模版,可以作为日常工作生产中的数据结构使用,以此减少了程序员很多去造轮子的工作量。容器(container),顾名思义,是一种按照某种特性,用于储存某种类型数据的一种数据...

机器学习杂货铺1号店 720

C++ 标准库中array总结

可以提高代码的可读性、可维护性和安全性,同时也能利用标准库的各种算法和工具,避免了使用 C 风格数组时可能出现的一些常见错误,如越界访问。提供了一种更安全、更方便的固定大小数组的使用方式。它结合了 C 风格数组的性能和 C++ 类的优点,支持迭代器、范围。是对传统 C 风格数组的封装,提供了更安全、更易用的接口和一些额外的功能。与 C 风格数组相比,循环和各种 STL 算法,使其成为 C++ 中处理固定大小数组的首选容器。是 C++ 标准库中的一个头文件,它提供了一个固定大小的数组容器。

行知SLAM 1008

C++ array容器用法详解

除此之外,C++ 11 标准库还新增加了 begin() 和 end() 这 2 个函数,和 array 容器包含的 begin() 和 end() 成员函数不同的是,标准库提供的这 2 个函数的操作对象,既可以是容器,还可以是普通数组。当操作对象是容器时,它和容器包含的 begin() 和 end() 成员函数的功能完全相同;和其它容器不同,array 容器的大小是固定的,无法动态的扩展或收缩,这也就意味着,在使用该容器的过程无法借由增加或移除元素而改变其大小,它只允许访问或者替换存储的元素。

Lemon_C17y的博客 2579

近万字带你了解“c++“STL中的各种容器

1.array容器 包含头文件#include<array>才能使用 简单来说他就是一个数组 知识c++中把他封装成一个类 这样可以直接使用 使用方法是array<类型,长度> 我们自己实现一个myarray带大家了解一下过程 #include<iostream> #include<array> using namespace std; template<class _Ty,size_t size> class myarray { p.

weixin_56366633的博客 2410

c++ array容器 传参_C++核心准则SL.con.1:标准库array或vector好于C数组

SL.con.1: Prefer using STLarrayorvectorinstead of a C arraySL.con.1:标准库array或vector好于C数组Reason(原因)C arrays are less safe, and have no advantages overarrayandvector. For a fixed-length arra...

weixin_39718890的博客 132

便利vector_C++核心准则?:标准库array或vector好于C数组

SL.con.1: Prefer using STL array or vector instead of a C arraySL.con.1:标准库array或vector好于C数组Reason(原因)C arrays are less safe, and have no advantages over array and vector. For a fixed-length array, us...

weixin_39640372的博客 102

C++ STL入门:从array到vector,领略模版编程的优势

如果你的数据量不确定,需要 “动态增减”(比如从用户输入中不断添加数据),array 和原生数组就不满足了 ,因为它们大小固定。这时候 vector 就派上用场了:它是 “动态数组”,能自动扩容,不用你手动管理内存。vector 是 STL 中最常用的容器,没有之一,因此要重点掌握它的用法。vector 和后两者的核心区别在于 “动态性”,如下表所示:特性原生数组std::array大小修改编译期固定编译期固定运行期动态调整内存位置栈 / 全局区栈 / 全局区堆(内部管理)

2501_93283929的博客 835

C++的STL简介

vector变量名;类型名:int ,double, char, struct, STL容器(vector,set,queue)// > >之间要加空格vector数组就是一个一维数组,如果定义成vector数组的数组,就是二维数组(低维是高维的地址)二维数组中,一维形式就是地址。int main()//输出arr第一行的地址return 0;set变量名;

bingbingaidaima的博客 3273
上一篇: 「图::连通」详解并查集并实现对应的功能 / 数据结构模版(C++)
下一篇: 「数学::数论」分解质因子 / LeetCode 2521(C++)
Daking-
博客等级 码龄3年 912粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值