[#BloombergLP-ball-AttributeContainerList] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/ball.adoc[ball]::AttributeContainerList :relfileprefix: ../../ :mrdocs: This class provides an in‐core value‐semantic list of `AttributeContainer` object addresses. Attribute container addresses are added to this list using `pushFront()`, which returns an iterator located at the new element. A `AttributeContainerList::iterator` object remains valid until the element referred to by the iterator is removed. Attribute container addresses can be removed using either `remove()`, `removeAll()`, or `removeAllAndRelease()`. This list object attempts to minimize the number of memory allocations it requires by placing the memory for elements that have been released in a free memory store, and re‐using the memory when new elements are added. The `removeAll()` removes all the elements from the list, but does not release any allocated memory (placing it in the free store). The `removeAllAndRelease()` operation removes all elements and releases all allocated memory. Note that maintaining a free store is important for this component because the expectation is that elements will be both added and removed frequently. == Synopsis Declared in `<ball_attributecontainerlist.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class AttributeContainerList; ---- == Type Aliases [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/AttributeContainerList/allocator_type.adoc[`allocator_type`] | `allocator_type` is an alias for the type of allocator used by this class. | xref:BloombergLP/ball/AttributeContainerList/iterator.adoc[`iterator`] | An iterator over this list. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/AttributeContainerList/2constructor-08.adoc[`AttributeContainerList`] [.small]#[constructor]# | Constructors | xref:BloombergLP/ball/AttributeContainerList/2destructor.adoc[`~AttributeContainerList`] [.small]#[destructor]# | Destroy this object. | xref:BloombergLP/ball/AttributeContainerList/operator_assign.adoc[`operator=`] | Assign this container list the value of the specified `rhs` one, and return a reference to this list. | xref:BloombergLP/ball/AttributeContainerList/begin.adoc[`begin`] | Return an iterator positioned at the beginning of the list of `AttributeContainer` object addresses represented by this object. | xref:BloombergLP/ball/AttributeContainerList/end.adoc[`end`] | Return an iterator positioned one past the final `AttributeContainer` object address in the list of addresses represented by this object. | xref:BloombergLP/ball/AttributeContainerList/get_allocator.adoc[`get_allocator`] | Return the allocator used by this object to supply memory. Note that if no allocator was supplied at construction the default allocator in effect at construction is used. | xref:BloombergLP/ball/AttributeContainerList/hasValue.adoc[`hasValue`] | Return `true` if the attribute having specified `value` exists in any of the attribute containers referred to by this object, and `false` otherwise. | xref:BloombergLP/ball/AttributeContainerList/numContainers.adoc[`numContainers`] | Return the number of attribute container addresses currently in this list. | xref:BloombergLP/ball/AttributeContainerList/print.adoc[`print`] | Format this object to the specified output `stream` at the (absolute value of) the optionally specified indentation `level` and return a reference to `stream`. If `level` is specified, optionally specify `spacesPerLevel`, the number of spaces per indentation level for this and all of its nested objects. If `level` is negative, suppress indentation of the first line. If `spacesPerLevel` is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by `level`). If `stream` is not valid on entry, this operation has no effect. | xref:BloombergLP/ball/AttributeContainerList/pushFront.adoc[`pushFront`] | Prepend the address of the specified `container` to this list of attribute container addresses, and return an iterator located at the newly added list element. | xref:BloombergLP/ball/AttributeContainerList/remove.adoc[`remove`] | Remove the specified `element` from this list. The behavior is undefined unless `element` is a valid iterator on this list and the referenced address has not previously been removed (by either `remove()`, `removeAll()`, or `removeAllAndRelease()`. | xref:BloombergLP/ball/AttributeContainerList/removeAll.adoc[`removeAll`] | Remove all the elements from this list. After this operation returns, `numContainers()` will be 0. This operation adds all the allocated memory to an internal free store, and does not deallocate any memory. | xref:BloombergLP/ball/AttributeContainerList/removeAllAndRelease.adoc[`removeAllAndRelease`] | Remove all the elements from this list and deallocate any allocated memory. | xref:BloombergLP/ball/AttributeContainerList/2conversion.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration<AttributeContainerList, UsesBslmaAllocator>`] | Declare that this type uses a `bslma` allocator. |=== == Non-Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/operator_not_eq-05.adoc[`operator!=`] | Return `true` if the specified `lhs` and `rhs` lists do not have the same value, and `false` otherwise. Two lists do not have the same value if have differing numbers of attribute container addresses or any of the addresses at corresponding indices have different values. | xref:BloombergLP/ball/operator_eq-027.adoc[`operator==`] | Return `true` if the specified `lhs` and `rhs` lists have the same value, and `false` otherwise. Two lists have the same value if they have the same number of attribute container addresses, and the address at each index position have the same value. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#