神夫草抑菌乳膏主治什么| 腿脚发麻是什么原因| 努尔哈赤和皇太极是什么关系| 梦见弟媳妇是什么预兆| ecmo是什么| 什么情况下会感染hpv病毒| 大殓是什么意思| 眼睛红血丝是什么原因| 枸杞和什么一起泡水喝最好| 胸内科主要看什么病| 墨镜什么牌子好| 什么的曲线| 完璧归赵发生在什么时期| 蛇酒不是三十九开什么| 路上遇到蛇是什么征兆| 什么族不吃猪肉| 40岁适合什么工作| qd医学上是什么意思| 鹦鹉吃什么食物| 1977年是什么命| 绝什么意思| 小孩黑眼圈很重是什么原因| 重庆市长什么级别| 夏至是什么节日| 妒忌是什么意思| 入睡困难吃什么药| 94年属狗什么命| 以什么| 仁慈是什么意思| 二月出生是什么星座| 舌头裂痕是什么原因| jojo是什么意思| 印度人为什么不吃猪肉| 刻章需要什么材料| 皮肤长癣是什么原因引起的| 赊账是什么意思| 六月初四是什么星座| 鹿皮绒是什么面料| 扶摇是什么意思| 肉痣长什么样子图片| 副乳挂什么科| 怕热的人是什么原因| 降三高喝什么茶最好| 吃什么软化血管| 95年什么生肖| 黄芪和枸杞泡水喝有什么作用| 工匠精神是什么| 站姐是什么职业| 夏天肚子疼是什么原因| 电离辐射是指什么| 鸡精是什么做的| 一岁宝宝口臭是什么原因引起的| 什么的小河| 梦到女朋友出轨是什么意思| 脑萎缩挂什么科| 慢性阑尾炎挂什么科| 脖子上长小肉疙瘩是什么原因| 割包皮看什么科| 58年属狗是什么命| 为什么血是红色的| 被褥是什么意思| 刺梨什么时候成熟| 脂肪肝看什么科| 梦见别人死了是什么预兆| 什么是再生纤维素纤维| 皮卡丘站起来变成了什么| 1328年属什么生肖| 家里为什么会有蟑螂| 割伤用什么药愈合伤口| 受精卵着床有什么反应| 什么叫国学| 大学校长是什么级别| 贾字五行属什么| 全身发麻是什么原因| apc是什么| owl是什么意思| 狗狗感冒了吃什么药| 重楼别名叫什么| 伏特加是什么| 脓是什么| 流鼻血看病挂什么科| 猪肝补什么功效与作用| 钾高是什么原因引起的| 是什么样的感觉我不懂是什么歌| 1878年属什么生肖| 智齿吃什么消炎药| 喜欢出汗是什么原因| 什么颜色加什么颜色等于橙色| 鸡叫是什么时辰| 雌激素是什么| 活水是什么意思| 嗓子痒痒吃什么药| 看甲沟炎挂什么科| 陶氏腔积液是什么意思| 牙龈疼吃什么药| 十一月一日是什么星座| 植物光合作用产生什么| 怀孕前三个月需要注意什么| 白酒泡什么补肾壮阳最好| 1月7号是什么星座| 肉苁蓉与什么搭配好| 曹洪是曹操的什么人| 什么是射线| 脖子皮肤黑是什么原因| 为什么总打嗝| 为什么不能在床上打坐| 膝盖发软无力是什么原因| 为什么进不去| 一如既往什么意思| 肝血管瘤挂什么科| 直肠癌是什么症状| 体癣用什么药| 包浆是什么意思| 古怪是什么意思| leep是什么意思| 什么品牌的床好| 槟榔是什么东西| 尿隐血是什么原因引起的| 宋威龙什么星座| 肾火旺吃什么药| 孕检都检查什么项目| 上大便出血是什么原因| 什么是粉尘螨过敏| 什么地躺着| hr是什么| 磁共振是做什么的| 六味地黄丸主治什么| 蚂蚱长什么样| 心电图窦性心律是什么意思| 为什么同房后会出血| 癫痫病吃什么药最好| 择期什么意思| 11月10日是什么星座| 78是什么意思| 脖子发痒是什么原因| 什么锤百炼| 痛风吃什么药| 真性情是什么意思| 午时右眼跳是什么预兆| 脚起皮干裂是什么原因| 猫吃什么| 昆明的别称是什么| 哭夫痣是什么意思| 月经不规律吃什么药调理| 角是什么生肖| 什么水果清热去火| 狗怕什么| 人为什么没有尾巴| 鼻子老流鼻涕是什么原因引起| 什么样的人容易中风| 转诊是什么意思| 漠漠什么意思| 手指头发麻是什么原因引起的| 低钠盐适合什么人吃| 为什么叫太平间| 牛骨煲什么汤对儿童好| 仇在姓氏中读什么| 什么是文字狱| 胎儿腹围偏大说明什么| 老婆饼是什么馅| 葸是什么意思| 什么是达人| 女以念什么| 血小板低有什么危害| 今天有什么新闻| oc是什么意思| 中药学专业学什么| 查过敏源挂什么科| 单身公寓是什么意思| 防字代表什么生肖| 今天生日什么星座| 皮肤过敏不能吃什么食物| 焦虑症什么症状| 麦昆牌子是什么档次| fob价格是什么意思| 日本天皇姓什么| 什么东西补肾最好| 什么是巨细胞病毒| 1942年属什么生肖属相| 一个日一个安念什么字| 单亲是什么意思| 佛手柑是什么| 纵什么意思| 粥样动脉硬化是什么意思| 魏大勋和李沁什么关系| 烫伤用什么药最好| 泻盐是什么东西| 红曲红是什么| 月经来潮是什么意思| 医院手环颜色代表什么| 男性染色体是什么| 挖墙脚是什么意思| 淼淼是什么意思| 舌头变黑是什么原因| 2月20号是什么星座| 站久了脚后跟疼是什么原因| 什么的大树| 内裤上有黄色分泌物是什么原因| 喝什么茶清肺效果最好| 太作了是什么意思| 备孕男性吃什么精子强| 女以念什么| e代表什么数字| 月经期间适合吃什么水果| 吃什么止血| 心静自然凉是什么意思| 200年属什么生肖| 日本兵为什么不怕死| 荨麻疹吃什么药效果好| cas号是什么意思| 血沉高意味着什么意思| 1991年是什么命| 梦见自己生了个女孩是什么意思| pf什么意思| 禅意是什么意思| 勖是什么意思| 肺痿是什么意思| 验血脂挂什么科| cn是什么| 肌无力是什么原因引起的| 舂米是什么意思| 紧迫感是什么意思| 轻浮的女人是什么意思| 肌电图主要检查什么病| 喝茶叶水有什么好处和坏处| 肝胆胰腺属于什么科| 芒果有什么好处| 武汉什么省| 心率过快有什么危害| 结婚35周年是什么婚| 1989年什么生肖| 深海鱼油什么牌子好| 什么是蝴蝶效应| 牙根发黑是什么原因| www是什么网| 脾胃不好吃什么水果| 1990属马的是什么命| 吃什么能增强记忆力| 眼压是什么意思| 木槿花什么时候开花| 姜为什么不能晚上吃| 脚酸疼是什么原因引起的吗| t是什么| 补办结婚证需要什么手续| 什么是闰年什么是平年| 肺气泡吃什么药| 左氧氟沙星氯化钠注射作用是什么| 什么情况下需要割包皮| 人大常委会主任是什么级别| 气机是什么意思| 大便呈绿色是什么原因| 气虚吃什么中成药| 粉底液和bb霜有什么区别| 保妇康栓是治疗什么的| 色斑是什么原因引起的| 女性排卵期出血是什么原因| 77年属什么| 高考四百分左右能上什么学校| 减肥为什么不让吃南瓜| 真人是什么意思| 上网是什么意思| 考编制需要什么条件| 太虚是什么意思| 气管小憩室是什么意思| 百度

运营商齐放招加码千兆宽带 飞入寻常百姓家要迈

百度 该书分为看风者听风者捕风者三个部分,分别对应监听员、解密员和行动员三个岗位,以亦虚亦实的故事,向我们披露了一代无名英雄的伟大和辛酸。

In computer science, an array is a data structure consisting of a collection of elements (values or variables), of same memory size, each identified by at least one array index or key, a collection of which may be a tuple, known as an index tuple. An array is stored such that the position (memory address) of each element can be computed from its index tuple by a mathematical formula.[1][2][3] The simplest type of data structure is a linear array, also called a one-dimensional array.

For example, an array of ten 32-bit (4-byte) integer variables, with indices 0 through 9, may be stored as ten words at memory addresses 2000, 2004, 2008, ..., 2036, (in hexadecimal: 0x7D0, 0x7D4, 0x7D8, ..., 0x7F4) so that the element with index i has the address 2000 + (i × 4).[4] The memory address of the first element of an array is called first address, foundation address, or base address.

Because the mathematical concept of a matrix can be represented as a two-dimensional grid, two-dimensional arrays are also sometimes called "matrices". In some cases the term "vector" is used in computing to refer to an array, although tuples rather than vectors are the more mathematically correct equivalent. Tables are often implemented in the form of arrays, especially lookup tables; the word "table" is sometimes used as a synonym of array.

Arrays are among the oldest and most important data structures, and are used by almost every program. They are also used to implement many other data structures, such as lists and strings. They effectively exploit the addressing logic of computers. In most modern computers and many external storage devices, the memory is a one-dimensional array of words, whose indices are their addresses. Processors, especially vector processors, are often optimized for array operations.

Arrays are useful mostly because the element indices can be computed at run time. Among other things, this feature allows a single iterative statement to process arbitrarily many elements of an array. For that reason, the elements of an array data structure are required to have the same size and should use the same data representation. The set of valid index tuples and the addresses of the elements (and hence the element addressing formula) are usually,[3][5] but not always,[2] fixed while the array is in use.

The term "array" may also refer to an array data type, a kind of data type provided by most high-level programming languages that consists of a collection of values or variables that can be selected by one or more indices computed at run-time. Array types are often implemented by array structures; however, in some languages they may be implemented by hash tables, linked lists, search trees, or other data structures.

The term is also used, especially in the description of algorithms, to mean associative array or "abstract array", a theoretical computer science model (an abstract data type or ADT) intended to capture the essential properties of arrays.

History

edit

The first digital computers used machine-language programming to set up and access array structures for data tables, vector and matrix computations, and for many other purposes. John von Neumann wrote the first array-sorting program (merge sort) in 1945, during the building of the first stored-program computer.[6] Array indexing was originally done by self-modifying code, and later using index registers and indirect addressing. Some mainframes designed in the 1960s, such as the Burroughs B5000 and its successors, used memory segmentation to perform index-bounds checking in hardware.[7]

Assembly languages generally have no special support for arrays, other than what the machine itself provides. The earliest high-level programming languages, including FORTRAN (1957), Lisp (1958), COBOL (1960), and ALGOL 60 (1960), had support for multi-dimensional arrays, and so has C (1972). In C++ (1983), class templates exist for multi-dimensional arrays whose dimension is fixed at runtime[3][5] as well as for runtime-flexible arrays.[2]

Applications

edit

Arrays are used to implement mathematical vectors and matrices, as well as other kinds of rectangular tables. Many databases, small and large, consist of (or include) one-dimensional arrays whose elements are records.

Arrays are used to implement other data structures, such as lists, heaps, hash tables, deques, queues, stacks, strings, and VLists. Array-based implementations of other data structures are frequently simple and space-efficient (implicit data structures), requiring little space overhead, but may have poor space complexity, particularly when modified, compared to tree-based data structures (compare a sorted array to a search tree).

One or more large arrays are sometimes used to emulate in-program dynamic memory allocation, particularly memory pool allocation. Historically, this has sometimes been the only way to allocate "dynamic memory" portably.

Arrays can be used to determine partial or complete control flow in programs, as a compact alternative to (otherwise repetitive) multiple IF statements. They are known in this context as control tables and are used in conjunction with a purpose-built interpreter whose control flow is altered according to values contained in the array. The array may contain subroutine pointers (or relative subroutine numbers that can be acted upon by SWITCH statements) that direct the path of the execution.

Element identifier and addressing formulas

edit

When data objects are stored in an array, individual objects are selected by an index that is usually a non-negative scalar integer. Indexes are also called subscripts. An index maps the array value to a stored object.

There are three ways in which the elements of an array can be indexed:

0 (zero-based indexing)
The first element of the array is indexed by subscript of 0.[8]
1 (one-based indexing)
The first element of the array is indexed by subscript of 1.
n (n-based indexing)
The base index of an array can be freely chosen. Usually programming languages allowing n-based indexing also allow negative index values and other scalar data types like enumerations, or characters may be used as an array index.

Using zero based indexing is the design choice of many influential programming languages, including C, Java and Lisp. This leads to simpler implementation where the subscript refers to an offset from the starting position of an array, so the first element has an offset of zero.

Arrays can have multiple dimensions, thus it is not uncommon to access an array using multiple indices. For example, a two-dimensional array A with three rows and four columns might provide access to the element at the 2nd row and 4th column by the expression A[1][3] in the case of a zero-based indexing system. Thus two indices are used for a two-dimensional array, three for a three-dimensional array, and n for an n-dimensional array.

The number of indices needed to specify an element is called the dimension, dimensionality, or rank of the array.

In standard arrays, each index is restricted to a certain range of consecutive integers (or consecutive values of some enumerated type), and the address of an element is computed by a "linear" formula on the indices.

One-dimensional arrays

edit
 
Diagram of a typical 1D array

A one-dimensional array (or single dimension array) is a type of linear array. Accessing its elements involves a single subscript which can either represent a row or column index.

As an example consider the C declaration int anArrayName[10]; which declares a one-dimensional array of ten integers. Here, the array can store ten elements of type int . This array has indices starting from zero through nine. For example, the expressions anArrayName[0] and anArrayName[9] are the first and last elements respectively.

For a vector with linear addressing, the element with index i is located at the address B + c · i, where B is a fixed base address and c a fixed constant, sometimes called the address increment or stride.

If the valid element indices begin at 0, the constant B is simply the address of the first element of the array. For this reason, the C programming language specifies that array indices always begin at 0; and many programmers will call that element "zeroth" rather than "first".

However, one can choose the index of the first element by an appropriate choice of the base address B. For example, if the array has five elements, indexed 1 through 5, and the base address B is replaced by B + 30c, then the indices of those same elements will be 31 to 35. If the numbering does not start at 0, the constant B may not be the address of any element.

 
Diagram of a typical 2D array

Multidimensional arrays

edit
 
Diagram of a typical 3D array

For a multidimensional array, the element with indices i,j would have address B + c · i + d · j, where the coefficients c and d are the row and column address increments, respectively.

More generally, in a k-dimensional array, the address of an element with indices i1, i2, ..., ik is

B + c1 · i1 + c2 · i2 + … + ck · ik.

For example: int a[2][3];

This means that array a has 2 rows and 3 columns, and the array is of integer type. Here we can store 6 elements they will be stored linearly but starting from first row linear then continuing with second row. The above array will be stored as a11, a12, a13, a21, a22, a23.

This formula requires only k multiplications and k additions, for any array that can fit in memory. Moreover, if any coefficient is a fixed power of 2, the multiplication can be replaced by bit shifting.

The coefficients ck must be chosen so that every valid index tuple maps to the address of a distinct element.

If the minimum legal value for every index is 0, then B is the address of the element whose indices are all zero. As in the one-dimensional case, the element indices may be changed by changing the base address B. Thus, if a two-dimensional array has rows and columns indexed from 1 to 10 and 1 to 20, respectively, then replacing B by B + c1 ? 3c2 will cause them to be renumbered from 0 through 9 and 4 through 23, respectively. Taking advantage of this feature, some languages (like FORTRAN 77) specify that array indices begin at 1, as in mathematical tradition while other languages (like Fortran 90, Pascal and Algol) let the user choose the minimum value for each index.

Dope vectors

edit

The addressing formula is completely defined by the dimension d, the base address B, and the increments c1, c2, ..., ck. It is often useful to pack these parameters into a record called the array's descriptor, stride vector, or dope vector.[2][3] The size of each element, and the minimum and maximum values allowed for each index may also be included in the dope vector. The dope vector is a complete handle for the array, and is a convenient way to pass arrays as arguments to procedures. Many useful array slicing operations (such as selecting a sub-array, swapping indices, or reversing the direction of the indices) can be performed very efficiently by manipulating the dope vector.[2]

Compact layouts

edit

Often the coefficients are chosen so that the elements occupy a contiguous area of memory. However, that is not necessary. Even if arrays are always created with contiguous elements, some array slicing operations may create non-contiguous sub-arrays from them.

 
Illustration of row- and column-major order

There are two systematic compact layouts for a two-dimensional array. For example, consider the matrix

 

In the row-major order layout (adopted by C for statically declared arrays), the elements in each row are stored in consecutive positions and all of the elements of a row have a lower address than any of the elements of a consecutive row:

1 2 3 4 5 6 7 8 9

In column-major order (traditionally used by Fortran), the elements in each column are consecutive in memory and all of the elements of a column have a lower address than any of the elements of a consecutive column:

1 4 7 2 5 8 3 6 9

For arrays with three or more indices, "row major order" puts in consecutive positions any two elements whose index tuples differ only by one in the last index. "Column major order" is analogous with respect to the first index.

In systems which use processor cache or virtual memory, scanning an array is much faster if successive elements are stored in consecutive positions in memory, rather than sparsely scattered. This is known as spatial locality, which is a type of locality of reference. Many algorithms that use multidimensional arrays will scan them in a predictable order. A programmer (or a sophisticated compiler) may use this information to choose between row- or column-major layout for each array. For example, when computing the product A·B of two matrices, it would be best to have A stored in row-major order, and B in column-major order.

Resizing

edit

Static arrays have a size that is fixed when they are created and consequently do not allow elements to be inserted or removed. However, by allocating a new array and copying the contents of the old array to it, it is possible to effectively implement a dynamic version of an array; see dynamic array. If this operation is done infrequently, insertions at the end of the array require only amortized constant time.

Some array data structures do not reallocate storage, but do store a count of the number of elements of the array in use, called the count or size. This effectively makes the array a dynamic array with a fixed maximum size or capacity; Pascal strings are examples of this.

Non-linear formulas

edit

More complicated (non-linear) formulas are occasionally used. For a compact two-dimensional triangular array, for instance, the addressing formula is a polynomial of degree 2.

Efficiency

edit

Both store and select take (deterministic worst case) constant time. Arrays take linear (O(n)) space in the number of elements n that they hold.

In an array with element size k and on a machine with a cache line size of B bytes, iterating through an array of n elements requires the minimum of ceiling(nk/B) cache misses, because its elements occupy contiguous memory locations. This is roughly a factor of B/k better than the number of cache misses needed to access n elements at random memory locations. As a consequence, sequential iteration over an array is noticeably faster in practice than iteration over many other data structures, a property called locality of reference (this does not mean however, that using a perfect hash or trivial hash within the same (local) array, will not be even faster - and achievable in constant time). Libraries provide low-level optimized facilities for copying ranges of memory (such as memcpy) which can be used to move contiguous blocks of array elements significantly faster than can be achieved through individual element access. The speedup of such optimized routines varies by array element size, architecture, and implementation.

Memory-wise, arrays are compact data structures with no per-element overhead. There may be a per-array overhead (e.g., to store index bounds) but this is language-dependent. It can also happen that elements stored in an array require less memory than the same elements stored in individual variables, because several array elements can be stored in a single word; such arrays are often called packed arrays. An extreme (but commonly used) case is the bit array, where every bit represents a single element. A single octet can thus hold up to 256 different combinations of up to 8 different conditions, in the most compact form.

Array accesses with statically predictable access patterns are a major source of data parallelism.

Comparison with other data structures

edit
Comparison of list data structures
Peek
(index)
Mutate (insert or delete) at … Excess space,
average
Beginning End Middle
Linked list Θ(n) Θ(1) Θ(1), known end element;
Θ(n), unknown end element
Θ(n) Θ(n)
Array Θ(1) 0
Dynamic array Θ(1) Θ(n) Θ(1) amortized Θ(n) Θ(n)[9]
Balanced tree Θ(log n) Θ(log n) Θ(log n) Θ(log n) Θ(n)
Random-access list Θ(log n)[10] Θ(1) [10] [10] Θ(n)
Hashed array tree Θ(1) Θ(n) Θ(1) amortized Θ(n) Θ(√n)

Dynamic arrays or growable arrays are similar to arrays but add the ability to insert and delete elements; adding and deleting at the end is particularly efficient. However, they reserve linear (Θ(n)) additional storage, whereas arrays do not reserve additional storage.

Associative arrays provide a mechanism for array-like functionality without huge storage overheads when the index values are sparse. For example, an array that contains values only at indexes 1 and 2 billion may benefit from using such a structure. Specialized associative arrays with integer keys include Patricia tries, Judy arrays, and van Emde Boas trees.

Balanced trees require O(log n) time for indexed access, but also permit inserting or deleting elements in O(log n) time,[11] whereas growable arrays require linear (Θ(n)) time to insert or delete elements at an arbitrary position.

Linked lists allow constant time removal and insertion in the middle but take linear time for indexed access. Their memory use is typically worse than arrays, but is still linear.

 
A two-dimensional array stored as a one-dimensional array of one-dimensional arrays (rows).

An Iliffe vector is an alternative to a multidimensional array structure. It uses a one-dimensional array of references to arrays of one dimension less. For two dimensions, in particular, this alternative structure would be a vector of pointers to vectors, one for each row(pointer on c or c++). Thus an element in row i and column j of an array A would be accessed by double indexing (A[i][j] in typical notation). This alternative structure allows jagged arrays, where each row may have a different size—or, in general, where the valid range of each index depends on the values of all preceding indices. It also saves one multiplication (by the column address increment) replacing it by a bit shift (to index the vector of row pointers) and one extra memory access (fetching the row address), which may be worthwhile in some architectures.

Dimension

edit

The dimension of an array is the number of indices needed to select an element. Thus, if the array is seen as a function on a set of possible index combinations, it is the dimension of the space of which its domain is a discrete subset. Thus a one-dimensional array is a list of data, a two-dimensional array is a rectangle of data,[12] a three-dimensional array a block of data, etc.

This should not be confused with the dimension of the set of all matrices with a given domain, that is, the number of elements in the array. For example, an array with 5 rows and 4 columns is two-dimensional, but such matrices form a 20-dimensional space. Similarly, a three-dimensional vector can be represented by a one-dimensional array of size three.

See also

edit

References

edit
  1. ^ Black, Paul E. (13 November 2008). "array". Dictionary of Algorithms and Data Structures. National Institute of Standards and Technology. Retrieved 22 August 2010.
  2. ^ a b c d e Bjoern Andres; Ullrich Koethe; Thorben Kroeger; Hamprecht (2010). "Runtime-Flexible Multi-dimensional Arrays and Views for C++98 and C++0x". arXiv:1008.2909 [cs.DS].
  3. ^ a b c d Garcia, Ronald; Lumsdaine, Andrew (2005). "MultiArray: a C++ library for generic programming with arrays". Software: Practice and Experience. 35 (2): 159–188. doi:10.1002/spe.630. ISSN 0038-0644. S2CID 10890293.
  4. ^ David R. Richardson (2002), The Book on Data Structures. iUniverse, 1112 pages. ISBN 0-595-24039-9, ISBN 978-0-595-24039-5.
  5. ^ a b Veldhuizen, Todd L. (December 1998). Arrays in Blitz++. Computing in Object-Oriented Parallel Environments. Lecture Notes in Computer Science. Vol. 1505. Berlin: Springer. pp. 223–230. doi:10.1007/3-540-49372-7_24. ISBN 978-3-540-65387-5.[dead link]
  6. ^ Knuth, Donald (1998). Sorting and Searching. The Art of Computer Programming. Vol. 3. Reading, MA: Addison-Wesley Professional. p. 159.
  7. ^ Levy, Henry M. (1984), Capability-based Computer Systems, Digital Press, p. 22, ISBN 9780932376220.
  8. ^ "Array Code Examples - PHP Array Functions - PHP code". Computer Programming Web programming Tips. Archived from the original on 13 April 2011. Retrieved 8 April 2011. In most computer languages array index (counting) starts from 0, not from 1. Index of the first element of the array is 0, index of the second element of the array is 1, and so on. In array of names below you can see indexes and values.
  9. ^ Brodnik, Andrej; Carlsson, Svante; Sedgewick, Robert; Munro, JI; Demaine, ED (1999), Resizable Arrays in Optimal Time and Space (Technical Report CS-99-09) (PDF), Department of Computer Science, University of Waterloo
  10. ^ a b c Chris Okasaki (1995). "Purely Functional Random-Access Lists". Proceedings of the Seventh International Conference on Functional Programming Languages and Computer Architecture: 86–95. doi:10.1145/224164.224187.
  11. ^ "Counted B-Trees".
  12. ^ "Two-Dimensional Arrays \ Processing.org". processing.org. Retrieved 1 May 2020.
edit
吃完避孕药不能吃什么东西 儿童腹泻吃什么药 摇头晃脑是什么生肖 脚背疼挂什么科 ml是什么意思
正比和反比是什么意思 人力资源是什么意思 腰穿是什么意思 侯是什么意思 节源开流是什么意思
cav是什么意思 蒸米饭时加什么好吃 外阴瘙痒用什么药 为什么有的人招蚊子 什么是紫癜
金刚石是由什么构成的 牙齿上有黑点是什么原因 ecc是什么意思 25年是什么婚 白配什么颜色好看
灵芝长什么样子图片qingzhougame.com 割包皮是什么意思hcv8jop1ns8r.cn 白内障是什么原因引起的hcv8jop9ns4r.cn 眼睛出现飞蚊症什么原因怎么办hcv9jop6ns3r.cn 梦见自己的哥哥死了是什么意思hcv8jop6ns5r.cn
万圣节什么时候hcv9jop8ns0r.cn 椰果是什么做的hcv8jop7ns3r.cn 为什么鸡蛋不能和牛奶一起吃hcv8jop2ns5r.cn 左手臂发麻是什么原因hcv9jop7ns5r.cn 血虚吃什么食物可以补hcv8jop0ns6r.cn
压片糖果是什么意思hcv8jop5ns8r.cn 梦到羊是什么意思hcv9jop4ns8r.cn 为什么孕酮会低hcv8jop4ns0r.cn 南瓜子有什么功效qingzhougame.com 五行大林木是什么意思hcv8jop6ns9r.cn
尿毒症的尿是什么颜色hcv8jop9ns7r.cn 湿气重不能吃什么食物hcv8jop7ns1r.cn llc是什么意思hcv8jop3ns9r.cn 为什么爱出汗hcv9jop6ns1r.cn oversize风格什么意思shenchushe.com
百度