【小白必经之路:玩转STL】array容器
此篇随笔将示范array容器的基本操作
1.介绍
array容器在C++普通数组的基础上,添加了一些函数。在使用上,它比普通数组更安全。
2.头文件及命名空间
1 #include<array>
2 using namespace std;
3.举例
array<double,10> arr;//声明一个装有10个double型元素的数组容器,容器名为arr
4.初始化
1 //array容器不会像普通数组那样进行默认初始化
2 array<int,10> arr01 {};//全部初始化为0
3 array<int,10> arr02 {1,2,3};//前三个元素初始化为1,2,3, 其他元素初始化为0
//上述初始化可以加等号,但是务必注意必须显性初始化,异于普通数组的默认初始化
5.遍历
//法1 数组名[下标]
#include<iostream>
#include<array>
using namespace std;
int main(){
array<int,10> arr {1,3,5,7,9,2,4,6,8,10};
for (size_t i = 0; i < arr.size(); i++)
{
cout<<arr[i]<<' ';
}
return 0;
}
//法2 迭代器
#include<iostream>
#include<array>
using namespace std;
int main(){
array<int,10> arr {1,3,5,7,9,2,4,6,8,10};
// for (array<int,10>::iterator it = arr.begin(); it != arr.end(); it++)
// {
// cout<<*it<<' ';
// }
for (auto it = arr.begin(); it != arr.end(); it++)
{
cout<<*it<<' ';
}
return 0;
}
6.快速求和:accumulate()函数
使用accumulate()函数实现数组快速求和
#include<iostream>
#include<array>
#include<numeric>//accumulate函数
using namespace std;
array<int,10> arr {1,3,5,7,9,2,4,6,8,10};
int main(){
cout<<accumulate(arr.begin(),arr.end(),0);//第三个参数相当于int sum = 0 的初始值0
return 0;
}
//输出:55
//若把第三个参数改为3,那么输出将会是58(55+3=58).
7.size()函数
//获取容器内元素的个数
#include<iostream>
#include<array>
using namespace std;
array<int,10> arr={1,3,5,7,9,2,4,6,8,10};
int main(){
cout<<"arr内元素个数为:"<<arr.size()<<endl;
return 0;
}
//输出:arr内元素个数为:10
8.empty()函数
//若容器为空则返回真
#include<iostream>
#include<array>
using namespace std;
array<int,0> arr;//第二个参数为0,容器为空
int main(){
if (arr.empty())
{
cout<<"arr is empty"<<endl;
} return 0;
}
//输出:arr is empty
9.fill()函数
//给所有元素初始化为特定值
#include<iostream>
#include<array>
using namespace std;
array<int,5> arr;
int main(){
arr.fill(-1);
for (size_t i = 0; i < arr.size(); i++)
{
cout<<arr[i]<<" ";
}
return 0;
}
//输出:-1 -1 -1 -1 -1
【小白必经之路:玩转STL】array容器的更多相关文章
- C++ STL vector容器学习
STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector, ...
- STL List容器
转载http://www.cnblogs.com/fangyukuan/archive/2010/09/21/1832364.html 各个容器有很多的相似性.先学好一个,其它的就好办了.先从基础开始 ...
- STL之容器适配器queue的实现框架
说明:本文仅供学习交流,转载请标明出处,欢迎转载! 上篇文章STL之容器适配器stack的实现框架已经介绍了STL是怎样借助基础容器实现一种经常使用的数据结构stack (栈),本文介绍下第二种STL ...
- STL的容器算法迭代器的设计理念
1) STL的容器通过类模板技术,实现数据类型和容器模型的分离. 2) STL的迭代器技术实现了遍历容器的统一方法:也为STL的算法提供了统一性. 3) STL的函数对象实现了自定义数据类型的算法运算 ...
- c++复习:STL之容器
1 STL的string 1 String概念 string是STL的字符串类型,通常用来表示字符串.而在使用string之前,字符串通常是用char*表示的.string与char*都可以用来表示字 ...
- stl之容器、迭代器、算法几者之间的关系
转自:https://blog.csdn.net/bobodem/article/details/49386131 stl包括容器.迭代器和算法: 容器 用于管理一些相关的数据类型.每种容器都有它的优 ...
- STL Queue 容器
STL Queue 容器 Queue简介 queue是队列容器,是一种“先进先出”的容器. queue是简单地装饰deque容器而成为另外的一种容器. # ...
- STL stack 容器
STL stack 容器 Stack简介 stack是堆栈容器,是一种“先进后出”的容器. stack是简单地装饰deque容器而成为另外的一种容器. #include <s ...
- STL Deque 容器
STL Deque 容器 Deque简介 deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双 端的,而vector是单端的. ...
- 浅谈C++ STL string容器
浅谈C++ STL string容器 本篇随笔简单讲解一下\(C++STL\)中\(string\)容器的使用方法及技巧. string容器的概念 其实\(string\)并不是\(STL\)的一种容 ...
随机推荐
- [ARC107D] Number of Multisets
\(\text{Solution}\) 学习到了一些 \(dp\) 的 \(trick\) 设 \(f_{i,j}\) 表示用了 \(i\) 的元素,当前和为 \(j\) 的方案数 \(dp\) 有两 ...
- CCRD_TOC_2008年第5期
中信国健临床通讯 2008年第5期 目 录 RA: 临床缓解与亚临床炎症 1. DMARD诱导缓解的RA患者中仍有影像学确证的亚临床炎症 Brown AK, et al. Arthriti ...
- 好消息!微信小程序开发环境自带vConsole
背景介绍 事情是这样子的,我们在开发小程序的时候,需要在真机上把相关的日志打出来以便进行问题定位和回溯,于是在编程界就有个今天这个新闻.------ 好消息!广东某男子发现微信小程序开发环境自带vCo ...
- 自己动手从零写桌面操作系统GrapeOS系列教程——6.电脑启动过程介绍
学习操作系统原理最好的方法是自己写一个简单的操作系统. 按一下电脑上的电源按钮,电脑就启动了,不一会儿电脑屏幕上就出现了登录界面或直接进入了桌面. 这是一个很日常的场景,但有时候会有个疑问:电脑内部是 ...
- LeetCode-794 有效的井字游戏
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-tic-tac-toe-state 题目描述 用字符串数组作为井字游戏的游戏板 boa ...
- 你可能不知道的HTML小技巧 面试题小技巧
程序员面试题库分享 1.前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 2.前端技术导航大全 推荐:★★★★★ 地址:前端技术导航大全 3.开发者颜色 ...
- dp-状压dp
https://www.bilibili.com/video/BV1Z4411x7Kw?from=search&seid=13855865082722302053 状压介绍: 状态表示: 转移 ...
- centos7部署Nacos单机版
环境:centos7.6.80.213.8.31单机部署Nacos 1.安装java yum install java-1.8.0-openjdk yum install java-1.8.0-ope ...
- 记录将Base64字符串转化为图片遇到的问题
今天通过与别人写的api交互,获取到了一个原为图片的base64字符串,在网上找到了相互转换的方法,但是在转化时,报出了"输入不是有效的 Base64 字符串,因为它包含非 base 64 ...
- PK获取面积
BOOL PK_AskFaceAreas(tag_t face_tag, double tol, double &areas) {//获得面积 tag_t ps_tag = NULL_TAG; ...