数组的选择--固定大小数组模板array存在的意义!
主要就是为了使用的方便,更加容易和algorithm的算法结合的更好!
#include <iostream> #include <ctime> #include <array> #include <functional> #include <algorithm> #include <boost\array.hpp> using namespace std; using namespace std::tr1; int getRand() { return rand()% 90 + 10; // 保证是两位数! } template < typename Iter > // 只支持int,这里只是用来演示 void print( Iter first,Iter last ) { copy( first,last, ostream_iterator< int >( cout," ") ); cout<< endl; } int main() { srand( (unsigned)time( NULL ) ); int test1_array[20]; generate( test1_array,test1_array + 20, getRand ); print( test1_array,test1_array + 20 ); sort( test1_array,test1_array+20, greater<int>() ); print( test1_array,test1_array + 20 ); // 无法用print倒着输出! cout<<"大小是"<< sizeof(test1_array) / sizeof(int) <<endl; array< int , 20 > test2_array; generate( test2_array.begin(), test2_array.end(), getRand ); print( test2_array.begin(), test2_array.end() ); sort( test2_array.begin(), test2_array.end() ); print( test2_array.begin(),test2_array.end() ); cout<< "大小是"<<test2_array.size()<<endl; // 优势,倒着输出,如此简单! print( test2_array.rbegin(), test2_array.rend() ); boost::array< int, 24 > test3_array; generate( test3_array.begin(), test3_array.end(), getRand ); print( test3_array.begin(),test3_array.end() ); print( test3_array.rbegin(),test3_array.rend() ); return 0; }
// 另外boost::array和tr1::array使用一样!
通过代码相信大家都已经看到了,使用这种固定数组模板能够用起来更方便,而且在效率上也不会有太大的开销。
个人对此的一些建议:
1.当我们只是把一个数组用来存放一些东西而且是固定大小的时候我们都使用C风格的数组。
2.如果我们对它的操作频繁涉及到很多算法的时候,我们可以考虑array模板!
3.当大小需要变动的时候建议使用其它标准容器!
数组的选择--固定大小数组模板array存在的意义!相关推荐
- java基础 --- Arrays.asList():返回指定数组支持的固定大小列表
Arrays.asList():返回指定数组支持的固定大小列表 首先看下这个方法的源码注释,注意第一句,Returns a fixed-size list backed by the specifie ...
- android 固定大小数组,android-Kotlin中的最大数组大小
我正在通过Android Studio 3.1.3在Kotlin中编程.我创建了一个Long类型的数组,该数组显然太大而无法编译.玩了一段时间后,我发现可以编译的最大大小数组包含8,207个元素.包含 ...
- Eigen学习笔记13:固定大小的可矢量化Eigen对象
对于固定大小的可矢量化Eigen对象的解释! Executive Summary 如果Eigen对象具有固定大小并且该大小是16个字节的倍数,则称为"固定大小向量化". 示例包括: ...
- Java之数组转集合集合转数组
一.数组转换为集合 需要注意的是,转换只能转换为List集合.那么为什么不能转换为Set集合呢? 原因是:Set不能存放重复元素,所以若转换为Set集合可能出现丢失元素的情况... 数组转换为集合使用 ...
- 数组转集合/集合转数组
数组转集合[五种方式] 常用方法:分别定义数组和集合,将数组的数据使用for each遍历出来,再填入集合里,输出集合 package listtoArray;import java.util.Arr ...
- 【C 语言】数组 ( 指针退化验证 | 计算数组大小 | #define LENGTH(array) (sizeof(array) / sizeof(*array)) )
文章目录 一.指针退化验证 二.完整代码示例 一.指针退化验证 nnn 维数组 作为 函数参数 , 会退化为 指针 , 注意这里只有 最高维 第 nnn 维 会 退化为指针 , 该指针指向 若干 n− ...
- Solidify实现一个智能合约7(固定大小字节数组)
固定大小字节数组 固定大小字节数组可以通过bytes1,bytes2,bytes3,...,bytes32来进行声明.PS:byte的别名就是bytes1. bytes1只能存储1个字节,也就是二进制 ...
- 数组array、数组方法,二维数组,冒泡/选择排序
目录 数组 array 数组的特点 数组的遍历 (循环) forEach()遍历(只能用于数组) map() some() every() 数组方法 去掉vuejs里面数组里的{__ob__: Obs ...
- js array 删除指定元素_数组--学习笔记(数据结构数组 /js数组)
学习目标: 了解什么是数组: 数组如何访问内存地址(一维,二维): 什么是数组 是由相同类型的元素的集合所组成的数据结构,分配一块连续的内存来存储.利用元素的索引可以计算出该元素对应的存储地址. 最简 ...
最新文章
- 如何寻找蛋白和蛋白,基因和基因之间的相互作用---string
- cpu子系统(优化)
- TF之LSTM:利用基于顺序的LSTM回归算法对DIY数据集sin曲线(蓝虚)预测cos(红实)(TensorBoard可视化)
- 11、InnoDB存储引擎
- [公告][重要]Senparc.Weixin v4.9.0 Senparc.Weixin.MP v14.3.104更新说明
- allocator类编程实验
- 一起教育科技登陆纳斯达克:首日股价上涨0.67%
- Go基础系列:接口类型断言和type-switch
- pybaobabdt 推荐一款超高颜值的模型可视化库
- win10设置HTML桌面背景,Win10系统直接将视频设置为桌面背景的方法
- h3c交换机配置远程管理_H3C交换机配置管理VLAN和配置远程登录
- 山东大学软件学院2021算法导论期末试题
- 安装watchdog监控系统
- wine - qq无法显示图片头像
- 被知网侵权长达13年!小说作家:一周前才知道
- Win下VS2019配置PCL点云库总结
- linux命令行显示主机名和当前目录
- 解析“Web3悖论”的内在机理与突破路径(上篇·悖论)
- 一份SEO优化操作方案具体讲解
- 无公网IP如何访问家中的NAS
热门文章
- 一身漏洞狂奔24年!人人都用的WiFi被曝重大漏洞,随时成为监控你的工具
- 美国邮政署将展开测试自驾卡车运输服务
- 记录一个坑的解决历程
- 【Linux使用技巧】linux 死机了怎么办
- MySQL如何找到表与表之间的关系?
- 安全日志的自动备份方法
- 高并发高流量网络架构
- php获取post表单数据_PHP如何通过post方法来获取form表单中数据?(代码示例)
- js按钮触发网页提醒_jquery,js页面加载时自动点击触发jq按钮-Go语言中文社区
- C语言便于调试的宏定义 __FILE__、__FUNCTION__、__LINE__、__VA_ARGS__ 参数使用