实用,为什么这样的一个数组?

Lisp只是用它来建立原子和表在世界各地,的确阵列是表中的一个超集,该表是一个数组,但不是表数组。代价将能够找到这种略带,无需证明。JS关联数组是一个红黑树,未关联数组C超集阵列,由于C用。或许实用的不是数组,而是运算符[],C++仅仅用重载[]就实现了数组。[]仅仅是一个函数调用而已。一种函数调用的简写形式。

这样的简写或者说语法糖非常重要,由于它让代码的可读性更好。[]是一个运算符重载,即a[1]会变换为标准的函数调用operator[](a,1)。再看看其它的运算符,1+2变换为operator+(1,2)。

两者的共性是变换,这个变换仅仅是一个简单的文本替换,没错,它就是宏。

我非常早就意识到C++的模板事实上是一种宏(这点在我的代码里也能够看出),也就是说宏是模板的超集。如今竟然发现运算符重载也是一种宏!

我一直以为模板和运算符重载才是C++的精髓。它们构建了整个C++世界。我错了,宏才是C++的根本。难道宏就是世界的终极原子?至少C++的if、for眼下还不是宏,我试试能不能把它们变成宏。

总结例如以下:

表是数组。数组是运算符重载。运算符重载是宏,模板是宏,所以大家都是宏。

精彩评论:

电脑内存或文件内容仅仅是一个一维二进制字节数组及其相应的二进制地址;

人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其相应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数參数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……

电脑内存或文部分内容的字节只是一个数组,以上已经证明阵列宏,所以,计算机内存是一个宏。

版权声明:本文博主原创文章。博客,未经同意不得转载。

时间: 2024-10-26 16:51:21

实用,为什么这样的一个数组?的相关文章

[luogu P3801] 红色的幻想乡 [线段树][树状数组]

题目背景 蕾米莉亚的红雾异变失败后,很不甘心. 题目描述 经过上次失败后,蕾米莉亚决定再次发动红雾异变,但为了防止被灵梦退治,她决定将红雾以奇怪的阵势释放. 我们将幻想乡看做是一个n*m的方格地区,一开始没有任何一个地区被红雾遮盖.蕾米莉亚每次站在某一个地区上,向东南西北四个方向各发出一条无限长的红雾,可以影响到整行/整列,但不会影响到她所站的那个地区.如果两阵红雾碰撞,则会因为密度过大而沉降消失.灵梦察觉到了这次异变,决定去解决它.但在解决之前,灵梦想要了解一片范围红雾的密度.可以简述为两种操

结对(求数组的最大子数组和)

题目: 返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大. 同时返回最大子数组的位置. 求所有子数组的和的最大值. (我主要负责程序分析,代码编程:张金负责代码复审,代码测试计划.) 思路: 与第一次的不同之处,只在于首尾相连,构成了一个环.思路差不多,我们构造了三个数组:(A)

hdu 5147 树状数组

题意:求满足a<b<c<d,A[a]<A[b],A[c]<A[d]的所有四元组(a,b,c,d)的个数 看到逆序对顺序对之类的问题一开始想到了曾经用归并排序求逆序对,结果YY了半天无果而终. 其实用树状数组做也很方便. 比如对于序列1 3 2 4 5,设数组c:0 0 0 0 0 一开始读入1,add(a[1],1),c:1 0 0 0 0 读入3,add(a[2],1),c:1 0 1 0 0 这时sum(a[2])-1就是3前面比3小的数的个数. 下面同理, 读入2,ad

二维数组中的查找,杨氏矩阵

题目: 在一个二维数组中,每行都按照从左到右的递增的顺序排序.每列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个数组和一个数,判断数组中是否包含这个数. 例如: 二维数组 1 2 3 4 5 6 7 8 9 查找数字7. 题目分析: 算法一: 杨氏矩阵中的查找,可以看做是在二维数组中查找,定义一个二维数组,根据数组的基本特点,可以从数组中第一个元素逐行进行遍历,若数组的某个元素与所要找的数字相等,则能够找到这个数字.如果遍历完整个数组,都没有与之相等的元素,则找不到这个数字. 下面

数组a[N],存放了1~N-1个数,其中某个数重复一次【转】

本文转自:http://blog.csdn.net/zhuimengzh/article/details/6720388 数组a[N],存放了1 至N-1 个数,其中某个数重复一次.写一个函数,找出被重复的数字.时间复杂度必须为o(N)函数原型:int do_dup(int a[],int N) 方法一: [cpp] view plain copy //好算法,因为第二个重复的数字其位置肯定不会变化,而a[a[0]]正好可以访问到每一个位置的数据. int do_dup(int a[],int 

趣味数组(二)

今天,继续讲趣味数组. 1.编程然后请输出这样的一个数组: 这和我们线代中学的上三角矩阵有点类似.我们在处理这个问题时,我们按照层来处理,不是一般的行列. 那么啥是层呢?例如:1就是第一层,2,3 就是第二层,456就是第三层,以此类推.在这里我们可以发现,层号和这个层里面所包含的元素个数是相同的. 设层号是 i,每一层所包含的元素个数为 j.那么,i 的范围是 i∈[1,n], j∈[1,i]. 这样我们就能很快的找出每一个元素位置的坐标关系:a[i-j+1][j] 代码如下: int a[1

多个二维数组如何取出它们的交集

一维数组取交集是非常的简单,直接用一个函数即可.array_intersect($arr, $ar),那么二维数组又是如何的取出它们的交集呢,可能有人同样想用这个函数,但结果却不是我们想要的.下面有这样的一个数组: $arr=array( array('a'=>'1',2), array(3,4) ); $ar=array( array('a'=>1,2), array(3,4) ); 如果我单独用 array_intersect($arr, $ar).返回的结果如下: array( arra

【C语言】二维数组中的查找,杨氏矩阵

//二维数组中的查找,杨氏矩阵 //在一个二维数组中,每行都按照从左到右的递增的顺序排序.每列都按照从上到下递增的顺序排序. //请完成一个函数,输入这样的一个数组和一个数,判断数组中是否包含这个数. #include <stdio.h> #define Col 4 int Yang(int arr[][Col], int val) { int i=0; int j = Col - 1; int tmp = arr[i][j]; //找到左上角的数 while (1) { if (tmp ==

左右值无限值分类算法

一.引言产 品分类,多级的树状结构的论坛,邮件列表等许多地方我们都会遇到这样的问题:如何存储多级结构的数据?在PHP的应用中,提供后台数据存储的通常是关系型 数据库,它能够保存大量的数据,提供高效的数据检索和更新服务.然而关系型数据的基本形式是纵横交错的表,是一个平面的结构,如果要将多级树状结构存储在 关系型数据库里就需要进行合理的翻译工作.接下来我会将自己的所见所闻和一些实用的经验和大家探讨一下:层级结构的数据保存在平面的数据库中基本上有两种常用设计方法: * 毗邻目录模式(adjacency