TITLE("BiVector class template") REF("T *vector") REF("T& AddTail()") REF("void AddHead(const T& x)") REF("void AddTail(const T& x)") REF("void AddHeadPick(pick_ T& x)") REF("void AddTailPick(pick_ T& x)") REF("T& Head()") REF("T& Tail()") REF("const T& Head() const") REF("const T& Tail() const") REF("void DropHead()") REF("void DropTail()") REF("T& operator[](int i)") REF("const T& operator[](int i) const") REF("void Shrink()") REF("bool IsEmpty() const") REF("void Clear()") REF("void Reserve(int n)") REF("int GetAlloc() const") REF("friend BiVector& operator<<(BiVector& b, const T& x)") REF("friend BiVector& operator>>(const T& x, BiVector& b)") REF("void Serialize(Stream& s)") REF("bool IsPicked()") REF("~BiVector()") REF("void operator=(pick_ BiVector& src)") REF("BiVector()") REF("typedef T ValueType") REF("ConstIterator Begin() const") REF("ConstIterator End() const") REF("ConstIterator GetIter(int pos) const") REF("Iterator Begin()") REF("Iterator End()") REF("Iterator GetIter(int pos)") TOPIC_TEXT( "[ $$0,0#00000000000000000000000000000000:Default][l288;i704;a17;O9;~~~.992; $$1," "0#10431211400427159095818037425705:param][a83;*R6 $$2,5#3131016247420302412518841" "7583966:caption][b83;* $$3,5#07864147445237544204411237157677:title][b167;a42;C $" "$4,6#40027414424643823182269349404212:item][b42;a42; $$5,5#4541300047534217475409" "1244180557:text][l288;a17; $$6,6#27521748481378242620020725143825:desc][l321;t246" ";C@5;1 $$7,7#20902679421464641399138805415013:code][b2503; $$8,0#6514237545610002" "3862071332075487:separator][*@(0.0.255) $$9,0#83433469410354161042741608181528:ba" "se][t4167;C+117 $$10,0#37138531426314131251341829483380:class][l288;a17;*1 $$11,1" "1#70004532496200323422659154056402:requirement][i416;b42;a42;O9;~~~.416; $$12,12#" "10566046415157235020018451313112:tparam][b167;C $$13,13#9243045944346046191110808" "0531343:item1][a42;C $$14,14#77422149456609303542238260500223:item2][*@2$(0.128.1" "28) $$15,15#34511555403152284025741354420178:NewsDate][l321;*C$7 $$16,16#03451589" "433145915344929335295360:result][l321;b83;a83;*C$7 $$17,17#0753155046352950537122" "8428965313:result`-line][l160;t4167;*C+117 $$18,5#8860394944220582595880005322242" "5:package`-title][{_}%EN-US [s10;~~~64; template &][s10;~~~64;* [*" " class ]BiVector&][s0; &][s1;l0;~~~.704; [*C@4 T]-|Type of elements stored in Vec" "tor. T is required to be [*/ moveable ]and must have either [*/ deep copy constru" "ctor], [*/ pick constructor] or [*/ default constructor].&][s5; Vector flavor of " "bidirectional container. Allows adding elements at both sides of sequence at cons" "tant amortized time.&][s5; Like any other NTL container, BiVector is [*/ moveable" "][/ ]type with [*/ pick and optional deep copy] transfer semantics. Calling meth" "ods of picked BiVector is logic error with exception of&][s0;C+75 void [* operato" "r=](pick`_ Vector`& [*@3 v])&][s0;/+75 [/C void ][*/C operator<<=][/C (const Vect" "or`& ][*/C@3 v][/C )][/ ](defined using DeepCopyOptionTemplate)&][s0;C+75 void [" "* Clear]()&][s0;C+75 bool [* IsPicked]() const&][s5; Opti") TOPIC_TEXT( "onal deep copy is implemented through DeepCopyOptionTemplate macro.&][s3; Member" "s&][s4;:T `*vector: T`& [* AddHead]()&][s6; Adds new default constructed element " "at the head of BiVector. The new element will be at position 0.&][s11; Requires T" " to have default constructor.&][s11; Invalidates iterators and references to BiVe" "ctor.&][s1; [*/ Return value]-|Reference to newly added default constructed eleme" "nt.&][s4;:T`& AddTail`(`): T`& [* AddTail]()&][s6; Adds new default constructed e" "lement at the tail of BiVector. The new element will be at position GetCount() - " "1.&][s11; Requires T to have default constructor.&][s11; Invalidates iterators an" "d references to BiVector.&][s1; [*/ Return value]-|Reference to newly added defau" "lt constructed element.&][s4;:void AddHead`(const T`& x`): void [* AddHead](const" " T`& [*@3 x])&][s6; Adds new element with specified value at the head of BiVector" ". The new element will be at position 0.&][s11; Requires T to have deep copy cons" "tructor.&][s11; Invalidates iterators and references to BiVector.&][s1; [*C@3 x]-" "|The value that is copied to the newly created element.&][s4;:void AddTail`(const" " T`& x`): void [* AddTail](const T`& [*@3 x])&][s6; Adds new element with specifi" "ed value at the tail of BiVector. The new element will be at position GetCount() " "- 1.&][s11; Requires T to have deep copy constructor.&][s11; Invalidates iterator" "s and references to BiVector.&][s1; [*C@3 x]-|The value that is copied to the new" "ly created element.&][s4;:void AddHeadPick`(pick`_ T`& x`): void [* AddHeadPick](" "pick`_ T`& [*@3 x])&][s6; Adds new element at the head of BiVector and picks valu" "e of parameter to it. The new element will be at position 0.&][s11; Requires T to" " have pick constructor.&][s11; Invalidates iterators and references to BiVector.&" "][s1; [*C@3 x]-|Source instance of T that is to be picked.&][s4;:void AddTailPick" "`(pick`_ T`& x`): void [* AddTailPick](pick`_ T`& [*@3 x])&][s6; Adds new element" " at the tail of BiVector and picks value of parameter to ") TOPIC_TEXT( "it. The new element will be at position GetCount() - 1.&][s11; Requires T to hav" "e pick constructor.&][s11; Invalidates iterators and references to BiVector.&][s1" "; [*C@3 x]-|Source instance of T that is to be picked.&][s4;:T`& Head`(`): T`& [*" " Head]()&][s6; Returns reference to the head of BiVector. Same as operator`[`](0)" ".&][s1; [*/ Return value]-|Reference to the head of BiVector.&][s4;:T`& Tail`(`):" " T`& [* Tail]()&][s6; Returns reference to the tail of BiVector. Same as operator" "`[`](GetCount() - 1).&][s1; [*/ Return value]-|Reference to the tail of BiVector." "&][s4;:const T`& Head`(`) const: const T`& [* Head]() const&][s6; Returns referen" "ce to the head of BiVector. Same as operator`[`](0).&][s1; [*/ Return value]-|Con" "stant reference to the head of BiVector.&][s4;:const T`& Tail`(`) const: const T`" "& [* Tail]() const&][s6; Returns reference to the tail of BiVector. Same as opera" "tor`[`](GetCount() - 1).&][s1; [*/ Return value]-|Constant reference to the tail " "of BiVector.&][s4;:void DropHead`(`): void [* DropHead]()&][s6; Removes element a" "t the head of BiVector.&][s11; Invalidates iterators and references to BiVector.&" "][s4;:void DropTail`(`): void [* DropTail]()&][s6; Removes element at the tail of" " BiVector.&][s11; Invalidates iterators and references to BiVector.&][s4;:T`& ope" "rator`[`]`(int i`): T`& [* operator]`[`](int [*@3 i])&][s6; Returns a reference t" "o the element at specified position.&][s1; [*C@3 i]-|Position of element.&][s1; [" "*/ Return value]-|Reference to the element.&][s4;:const T`& operator`[`]`(int i`)" " const: const T`& [* operator]`[`](int [*@3 i]) const&][s6; Returns a reference t" "o the element at specified position.&][s1; [*C@3 i]-|Position of element.&][s1; [" "*/ Return value]-|Constant reference to the element.&][s4;:void Shrink`(`): int [" "* GetCount]() const&][s6; Returns the number of elements in BiVector.&][s1; [*/ R" "eturn value]-|Actual number of elements.&][s4;:bool IsEmpty`(`) const: bool [* Is" "Empty]() const&][s6; Tests whether BiVector is empty. Sam") TOPIC_TEXT( "e as GetCount() == 0.&][s1; [*/ Return value]-|true if Vector is empty, false ot" "herwise.&][s4;:void Clear`(`): void [* Clear]()&][s6; Removes all elements from B" "iVector.&][s4;~~~.992; void [* Shrink]()&][s6; Minimizes memory consumption of Bi" "Vector by minimizing capacity.&][s4;:void Reserve`(int n`): void [* Reserve](int " "[*@3 n])&][s6; Reserves capacity. If required capacity is greater than the curren" "t capacity, capacity is increased to the required value.&][s1; [*C@3 n]-|Required" " capacity.&][s4;:int GetAlloc`(`) const: int [* GetAlloc]() const&][s6; Returns c" "urrent capacity of BiVector.&][s1; [*/ Return value]-|Capacity of BiVector.&][s4;" ":friend BiVector`& operator`<`<`(BiVector`& b`, const T`& x`): friend BiVector`& " "[* operator]<<(BiVector`& [*@3 b], const T`& [*@3 x])&][s6; Operator replacement " "of [* void AddTail(const T`&x)]. By returning reference to the BiVector allows ad" "ding more elements in single expression, thus e.g. allowing to construct temporar" "y BiVector as part of expression like Foo(BiVector() << 1 << 2 << 4).&][s11;" " Requires T to have deep copy constructor.&][s11; Invalidates iterators and refer" "ences to BiVector.&][s1; [*C@3 x]-|The value that is copied to the newly created " "element.&][s1; [*/ Return value]-|Reference to BiVector (that is *this).&][s4;:fr" "iend BiVector`& operator`>`>`(const T`& x`, BiVector`& b`): friend BiVector`& [* " "operator]>>(const T`& [*@3 x], BiVector`& [*@3 b])&][s6; Operator replacement of " "[* void AddHead(const T`&x)]. By returning reference to the BiVector allows addin" "g more elements in single expression, thus e.g. allowing to construct temporary B" "iVector as part of expression like Foo(1 >> (2 >> BiVector())).&][s11; Requi" "res T to have deep copy constructor.&][s11; Invalidates iterators and references " "to BiVector.&][s1; [*C@3 x]-|The value that is copied to the newly created elemen" "t.&][s1; [*/ Return value]-|Reference to BiVector (that is *this).&][s4;:void Ser" "ialize`(Stream`& s`): void [* Serialize](Stream`& [*@3 s]") TOPIC_TEXT( ")&][s6; Serializes content of BiVector to/from Stream. Works only if NTL is used" " as part of UPP.&][s11; Requires T to have serialization operator defined.&][s1; " "[*C@3 s]-|Target/source stream.&][s4;:bool IsPicked`(`): [* BiVector]()&][s6; Def" "ault constructor. Constructs empty BiVector.&][s4; ~[* BiVector]()&][s6; Destruct" "or. Calls destructors of all elements in BiVector.&][s4;:`~BiVector`(`): [* BiVec" "tor](pick`_ BiVector`& [*@3 src])&][s6; Pick constructor. Transfers source BiVect" "or in low constant time, but destroys it by picking.&][s1; [*C@3 src]-|Source BiV" "ector.&][s4;:void operator`=`(pick`_ BiVector`& src`): void [* operator]=(pick`_ " "BiVector`& [*@3 src])&][s6; Pick operator. Transfers source BiVector in low const" "ant time, but destroys it by picking.&][s1; [*C@3 v]-|Source BiVector.&][s4; bool" " [* IsPicked]()&][s6; Returns [* true] if BiVector is in picked state.&][s1; [*/ " "Return value]-|[* true] if BiVector is in picked state, [* false] otherwise.&][s4" ";:BiVector`(`): [* BiVector](const BiVector`& [*@3 src], int)&][s6; Optional deep" " copy constructor.&][s11; Requires T to have deep copy constructor or optional de" "ep copy constructor.&][s1; [*C@3 v]-|Source BiVector.&][s4; void [* operator<<=](" "const BiVector`& [*@3 v])&][s6; Optional deep copy operator. Defined using DeepCo" "pyOptionTemplate.&][s11; Requires T to have deep copy operator or optional deep c" "opy operator.&][s1; [*C@3 v]-|Source Vector.&][s4;:typedef T ValueType:* [* typed" "ef T ]ValueType&][s6; Typedef of T for use in templated algorithms.&][s4;:typedef" " T ValueType: typedef [/ type] [* Iterator];&][s6; Iterator type.&][s4; typedef [" "/ type] [* ConstIterator];&][s6; Constant iterator type.&][s4;:ConstIterator Begi" "n`(`) const: ConstIterator [* Begin]() const&][s6; Returns constant iterator to t" "he first element in BiVector.&][s1; [*/ Return value]-|Iterator.&][s4;:ConstItera" "tor End`(`) const: ConstIterator [* End]() const&][s6; Returns constant iterator " "to the position just beyond the last element in BiVector.") TOPIC_TEXT( "&][s1; [*/ Return value]-|Iterator.&][s4;:ConstIterator GetIter`(int pos`) const" ": ConstIterator [* GetIter](int [*@3 pos]) const&][s6; Returns constant iterator " "to the element at specified position. Same as [* Begin() + i]. Benefit of this me" "thods is that in debug mode [* pos] is range checked.&][s1; [*C@3 i]-|Required po" "sition.&][s1; [*/ Return value]-|Iterator.&][s4;:Iterator Begin`(`): Iterator [* " "Begin]()&][s6; Returns non-constant iterator to the first element in Vector.&][s1" "; [*/ Return value]-|Iterator.&][s4;:Iterator End`(`): Iterator [* End]()&][s6; R" "eturns non-constant iterator to the position just beyond the last element in Vect" "or.&][s1; [*/ Return value]-|Iterator.&][s4;:Iterator GetIter`(int pos`): Iterato" "r [* GetIter](int [*@3 pos])&][s6; Returns non-constant iterator to the element a" "t specified position. Same as [* Begin() + pos]. Benefit of this methods is that " "in debug mode [* pos] is range checked.&][s1; [*C@3 i]-|Required position.&][s1; " "[*/ Return value]-|Iterator.&][s4; friend void [* Swap](BiVector`& [*@3 a], BiVec" "tor`& [*@3 b])&][s6; Specialization of generic [* Swap] for BiVector. Swaps BiVec" "tor in low constant time operation.&][s1; [*C@3 a]-|First BiVector to swap.&][s1;" " [*C@3 b]-|Second BiVector to swap.&][s0; ")