# Example Vector copy 004

#### 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 #("The " "Rain " "in " "Spain") ) Returns: #

The copied Vector using the copy function.

 (setq z (copy x)) Returns: #

The copied Vector using the setq function.

 (setq twin x) Returns: #

After the first setq function, the values of Vector z are:

 z[0] Returns: The
 z[1] Returns: Rain
 z[2] Returns: in
 z[3] Returns: Spain

After the first setq function, the values of Vector x are:

 z[0] Returns: The
 x[1] Returns: Rain
 x[2] Returns: in
 x[3] Returns: Spain

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] "Hail" ) Returns: #

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

 twin[1] Returns: Hail
 x[1] Returns: Hail

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: Rain

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 Lambda copy 008 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

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

copy

Here are a number of links to other related functions.

 setq(#void)

#### Argument Types

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

 Vector

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

 BitVector bitToIntegerVector 001 BitVector isBitVector 001 CpxVector apply 010 Dictionary isDictionary 001 Dictionary objectToDictionary 001 Dictionary objectToDictionary 002 Dictionary objectToDictionary 003 Dictionary objectToDictionary 004 Dictionary refValues 002 Dictionary setAttributes 002 Dictionary sort 003 Directory objectToDirectory 001 Directory objectToDirectory 002 Directory objectToDirectory 003 Directory objectToDirectory 004 Directory refValues 003 Directory setAttributes 003 FltVector binaryInsert 004 FltVector compareLE 014 FltVector compareLT 014 FltVector isFloatVector 001 IntVector binaryInsert 005 IntVector bitToIntegerVector 002 IntVector isIntegerVector 001 Matrix binaryInsert 004 Matrix compareGT 007 Matrix compareLT 007 Matrix matrixGaussianSubstitute 001 NumMatrix matrixGaussianSubstitute 001 NumVector isNumberVector 001 NumVector objectToNumVector 001 NumVector svmRegression 001 Number product 001 ObjVector isObjectVector 001 PcodeVector isPcodeVector 001 String find 001 String find 002 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 parse 001 String sizeof 001 String string 001 String string 002 String string 003 String stringToBVector 001 String stringToBVector 002 String stringToBVector 003 String stringToVector 001 String stringToVector 002 String stringToVector 003 String stringToVector 004 String type 001 Structure objectToStructure 001 Structure objectToStructure 002 Structure objectToStructure 003 Structure objectToStructure 004 Structure setAttributes 001 Symbol isCharName 002 Symbol isCharNumeric 002 Symbol isObject 002 Symbol isSymbol 001 Symbol isType 004 Symbol sizeof 002 Symbol type 002 Vector addMethod 007 Vector append 006 Vector appendWriteln 001 Vector apply 003 Vector apply 004 Vector binaryInsert 002 Vector binaryInsert 003 Vector binarySearch 003 Vector binarySearch 004 Vector cdr 005 Vector cdr 006 Vector compare 006 Vector compareEQ 006 Vector compareGE 006 Vector compareGT 006 Vector compareLE 006 Vector compareLT 006 Vector compareNE 006 Vector comparison functions 006 Vector copy 004 Vector copy 005 Vector count 004 Vector defmethod 008 Vector delete 007 Vector delete 008 Vector insert 004 Vector inside 004 Vector isAtom 004 Vector isEqual 004 Vector isIdentical 004 Vector isObject 006 Vector isType 008 Vector isVector 001 Vector length 007 Vector map 004 Vector mapc 004 Vector member 004 Vector methodsOf 009 Vector new 007 Vector new 008 Vector objectToVector 001 Vector ref 013 Vector ref 014 Vector refAttributes 004 Vector refValues 004 Vector remove 004 Vector resize 004 Vector reverse 001 Vector send 006 Vector setAttributes 004 Vector setAttributes 005 Vector setBlock 001 Vector setCdr 004 Vector setLastCdr 002 Vector setq 012 Vector setq 013 Vector sizeof 006 Vector sort 010 Vector sort 011 Vector type 009 Vector uniqueInsert 003 Vector vectorFill 001

#### Analytic Information Server (AIS)

AIS Component Systems

• Smartbase Engine
• QT C++ Libraries
• MySQL Relational Database
• AIS Lisp Libraries
• Rapid Analytic Demo IDE