Example IntVector copy 007

 

 

Description

This example shows how a Vector may be modified destructively or non-destructively using the the copy and setq function.

 

Details

The original Vector.

(define x #(int| 11 12 )) Returns: #<IntVector 123456>

The copied Vector using the copy function.

(setq z (copy x)) Returns: #<IntVector 234567>

The copied Vector using the setq function.

(setq twin x) Returns: #<IntVector 345678>

The container named z is a copy of x (both are Vectors) and z has a separate memory space. However, the containers named x and twin point to the same memory spaces on the heap. Therefore

(setq twin[1] 3 ) Returns: #<IntVector 123456>

The setq command results in the contents of both twin and x being both the same.

twin[1] Returns: 3
x[1] Returns: 3

Since z points to a different memory space, it still retained the original value which was copied from x before the values of x were modified.

z[1] Returns: 12

Notes and Hints

Using the setq function results in objects having the same object id. But the object that is being assigned the copied object has a different object id than original object. In this example twin and x have the same object id while z has a different object id.

 

Related Examples

Here are examples of the copy function at work.

BitVector copy 011 Brick copy 012 CpxVector copy 013 Dictionary copy 002
Directory copy 003 FltVector copy 006 IntVector copy 007 List copy 010
Matrix copy 006 Matrix copy 007 NumMatrix copy 011 NumVector copy 008
ObjVector copy 009 Pair copy 009 PcodeVector copy 010 ShortVector copy 008
Structure copy 001 Vector copy 004 Vector copy 005

 

Function Links

Here is the link to the current function used in this example.

copy

Here are a number of links to other related functions.

setq(IntVector)

 

Argument Types

Here are the links to the data types of the arguments used in this example.

IntVector

Here are a number of links to examples having similar argument types.

BitVector bitToIntegerVector 001 Dictionary isDictionary 001 FltVector sort 013 IntVector addMethod 020
IntVector append 007 IntVector apply 006 IntVector binarySearch 006 IntVector bitToIntegerVector 002
IntVector cdr 007 IntVector compare 015 IntVector compareEQ 014 IntVector compareGE 014
IntVector compareGT 014 IntVector compareLE 014 IntVector compareLT 014 IntVector compareNE 014
IntVector comparison functions 014 IntVector copy 007 IntVector defmethod 018 IntVector delete 010
IntVector insert 006 IntVector inside 005 IntVector isAtom 006 IntVector isEqual 014
IntVector isIdentical 013 IntVector isIntegerVector 001 IntVector isObject 008 IntVector isType 017
IntVector length 009 IntVector map 006 IntVector mapc 006 IntVector member 005
IntVector methodsOf 018 IntVector new 010 IntVector ref 023 IntVector remove 005
IntVector resize 007 IntVector reverse 004 IntVector send 016 IntVector setCdr 007
IntVector setLastCdr 007 IntVector setq 020 IntVector sizeof 015 IntVector sort 014
IntVector type 017 IntVector uniqueInsert 005 IntVector vectorFill 004 ShortVector isType 018
String isChar 001 String isCharAlphabetic 001 String isCharAlphanumeric 001 String isCharLowercase 001
String isCharName 001 String isCharNumeric 001 String isCharUppercase 001 String isCharWhitespace 001
String isEqual 001 String isEqual 002 String isObject 001 String isString 001
String isText 001 String isType 001 String isType 002 String isType 003
String sizeof 001 String string 001 String string 002 String string 003
String type 001 Symbol isCharName 002 Symbol isCharNumeric 002 Symbol isObject 002
Symbol isSymbol 001 Symbol isType 004 Symbol sizeof 002 Symbol type 002
Vector sort 011

How do I contact the AIS Server team?

You can always talk with the AIS at aiserver.sourceforge.net.