Construction & Deletion
var x = new(Array, Int);
push(x, $I(32));
push(x, $I(6));
/* <'Array' At 0x0000000000414603 [32, 6]> */
show(x);
Element Access
var x = new(Array, Float, $F(0.01), $F(5.12));
show(get(x, $I(0))); /* 0.01 */
show(get(x, $I(1))); /* 5.12 */
set(x, $I(0), $F(500.1));
show(get(x, $I(0))); /* 500.1 */
Membership
var x = new(Array, Int, $I(1), $I(2), $I(3), $I(4));
show($I(mem(x, $I(1)))); /* 1 */
show($I(len(x))); /* 4 */
rem(x, $I(3));
show($I(mem(x, $I(3)))); /* 0 */
show($I(len(x))); /* 3 */
show($I(empty(x))); /* 0 */
resize(x, 0);
show($I(empty(x))); /* 1 */
Iteration
var greetings = new(Array, String,
$S("Hello"), $S("Bonjour"), $S("Hej"));
foreach(greet in greetings) {
show(greet);
}
Sequential Container
The Array
type is data structure containing a sequence of a single type of object. It can dynamically grow and shrink in size depending on how many elements it contains. It allocates storage for the type specified. It also deallocates and destroys the objects inside upon destruction.
Elements are copied into an Array using assign
and will initially have zero'd memory.
Elements are ordered linearly. Elements are accessed by their position in this sequence directly. Addition and removal of elements at the end of the sequence is fast, with memory movement required for elements in the middle of the sequence.
This is largely equivalent to the C++ construct std::vector
assign
cmp
eq
neq
gt
lt
ge
le
append
concat
name
brief
description
definition
get
set
mem
rem
key_type
val_type
hash
hash_data
foreach
iter_init
iter_next
iter_type
len
mark
new
del
construct
destruct
push
pop
push_at
pop_at
resize
show
look
print
scan
sort
sort_by