📄 pod_vector.hpp
字号:
inline ss_typename_type_k pod_vector<T, A, SPACE>::reverse_iterator pod_vector<T, A, SPACE>::rend()
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
return reverse_iterator(begin());
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline ss_typename_type_k pod_vector<T, A, SPACE>::const_reverse_iterator pod_vector<T, A, SPACE>::rend() const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline ss_typename_type_k pod_vector<T, A, SPACE>::const_reverse_iterator pod_vector<T, A, SPACE>::rend() const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
return const_reverse_iterator(begin());
}
#endif /* STLSOFT_CF_BIDIRECTIONAL_ITERATOR_SUPPORT */
// Attributes
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline ss_typename_type_k pod_vector<T, A, SPACE>::size_type pod_vector<T, A, SPACE>::size() const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline ss_size_t pod_vector<T, A, SPACE>::size() const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
return m_cItems;
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline ss_typename_type_k pod_vector<T, A, SPACE>::size_type pod_vector<T, A, SPACE>::capacity() const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline ss_size_t pod_vector<T, A, SPACE>::capacity() const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
return m_buffer.size();
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline ss_typename_type_k pod_vector<T, A, SPACE>::size_type pod_vector<T, A, SPACE>::max_size() const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline ss_size_t pod_vector<T, A, SPACE>::max_size() const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
return static_cast<size_type>(-1) / sizeof(value_type);
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
inline ss_bool_t pod_vector<T, A, SPACE>::empty() const
{
STLSOFT_ASSERT(is_valid_());
return 0 == size();
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline ss_typename_type_k pod_vector<T, A, SPACE>::allocator_type pod_vector<T, A, SPACE>::get_allocator() const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline ss_typename_type_k pod_vector<T, A, SPACE>::allocator_type pod_vector<T, A, SPACE>::get_allocator() const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
return m_buffer.get_allocator();
}
// Accessors
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED_EXCEPT_ARGS)
inline ss_typename_type_k pod_vector<T, A, SPACE>::reference pod_vector<T, A, SPACE>::at(size_type index)
#elif defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline ss_typename_type_k pod_vector<T, A, SPACE>::reference pod_vector<T, A, SPACE>::at(ss_typename_type_k pod_vector<T, A, SPACE>::size_type index)
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline T &pod_vector<T, A, SPACE>::at(size_type index)
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
range_check_(index);
STLSOFT_ASSERT(is_valid_());
return begin_()[index];
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED_EXCEPT_ARGS)
inline ss_typename_type_k pod_vector<T, A, SPACE>::const_reference pod_vector<T, A, SPACE>::at(size_type index) const
#elif defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline ss_typename_type_k pod_vector<T, A, SPACE>::const_reference pod_vector<T, A, SPACE>::at(ss_typename_type_k pod_vector<T, A, SPACE>::size_type index) const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline T const& pod_vector<T, A, SPACE>::at(size_type index) const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
range_check_(index);
STLSOFT_ASSERT(is_valid_());
return begin_()[index];
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED_EXCEPT_ARGS)
inline ss_typename_type_k pod_vector<T, A, SPACE>::reference pod_vector<T, A, SPACE>::operator [](size_type index)
#elif defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline ss_typename_type_k pod_vector<T, A, SPACE>::reference pod_vector<T, A, SPACE>::operator [](ss_typename_type_k pod_vector<T, A, SPACE>::size_type index)
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline T &pod_vector<T, A, SPACE>::operator [](size_type index)
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
// The index must be <= the size(). It is allowed to be equal to the size because
// we must facilitate the taking of the end() element in order to specify ranges.
STLSOFT_MESSAGE_ASSERT("Requested index is out of range", !(size() < index));
return begin_()[index];
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED_EXCEPT_ARGS)
inline ss_typename_type_k pod_vector<T, A, SPACE>::const_reference pod_vector<T, A, SPACE>::operator [](size_type index) const
#elif defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline ss_typename_type_k pod_vector<T, A, SPACE>::const_reference pod_vector<T, A, SPACE>::operator [](ss_typename_type_k pod_vector<T, A, SPACE>::size_type index) const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline T const& pod_vector<T, A, SPACE>::operator [](size_type index) const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
STLSOFT_MESSAGE_ASSERT("Requested index is out of range", index < size());
return begin_()[index];
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED_EXCEPT_ARGS)
inline ss_typename_type_k pod_vector<T, A, SPACE>::reference pod_vector<T, A, SPACE>::front()
#elif defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline ss_typename_type_k pod_vector<T, A, SPACE>::reference pod_vector<T, A, SPACE>::front()
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline T &pod_vector<T, A, SPACE>::front()
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
STLSOFT_MESSAGE_ASSERT("Range is empty!", 0 != size());
return begin_()[0];
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED_EXCEPT_ARGS)
inline ss_typename_type_k pod_vector<T, A, SPACE>::const_reference pod_vector<T, A, SPACE>::front() const
#elif defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline ss_typename_type_k pod_vector<T, A, SPACE>::const_reference pod_vector<T, A, SPACE>::front() const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline T const& pod_vector<T, A, SPACE>::front() const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
STLSOFT_MESSAGE_ASSERT("Range is empty!", 0 != size());
return begin_()[0];
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED_EXCEPT_ARGS)
inline ss_typename_type_k pod_vector<T, A, SPACE>::reference pod_vector<T, A, SPACE>::back()
#elif defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline ss_typename_type_k pod_vector<T, A, SPACE>::reference pod_vector<T, A, SPACE>::back()
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline T &pod_vector<T, A, SPACE>::back()
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
STLSOFT_MESSAGE_ASSERT("Range is empty!", 0 != size());
return begin_()[size() - 1];
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED_EXCEPT_ARGS)
inline ss_typename_type_k pod_vector<T, A, SPACE>::const_reference pod_vector<T, A, SPACE>::back() const
#elif defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline ss_typename_type_k pod_vector<T, A, SPACE>::const_reference pod_vector<T, A, SPACE>::back() const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline T const& pod_vector<T, A, SPACE>::back() const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
STLSOFT_MESSAGE_ASSERT("Range is empty!", 0 != size());
return begin_()[size() - 1];
}
// Operations
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
inline void pod_vector<T, A, SPACE>::clear()
{
STLSOFT_ASSERT(is_valid_());
if(m_buffer.resize(0))
{
m_cItems = 0;
}
STLSOFT_ASSERT(is_valid_());
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
inline void pod_vector<T, A, SPACE>::swap(pod_vector<T, A, SPACE>& rhs)
{
STLSOFT_ASSERT(is_valid_());
m_buffer.swap(rhs.m_buffer);
std_swap(m_cItems, rhs.m_cItems);
STLSOFT_ASSERT(is_valid_());
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline void pod_vector<T, A, SPACE>::reserve(ss_typename_type_k pod_vector<T, A, SPACE>::size_type cItems) /* stlsoft_throw_1(stlsoft_ns_qual_std(bad_alloc) ) */
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline void pod_vector<T, A, SPACE>::reserve(size_type cItems) /* stlsoft_throw_1(stlsoft_ns_qual_std(bad_alloc) ) */
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
STLSOFT_ASSERT(is_valid_());
// We do not follow vector's much maligned example and refuse to truncate, although
// we only do so if the requested size is 0.
if( 0 == cItems ||
cItems > size())
{
m_buffer.resize(cItems);
}
STLSOFT_ASSERT(is_valid_());
}
template< ss_typename_param_k T
, ss_typename_param_k A
, ss_size_t SPACE
>
#if defined(STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED)
inline void pod_vector<T, A, SPACE>::resize(ss_typename_type_k pod_vector<T, A, SPACE>::size_type cItems) /* stlsoft_throw_1(stlsoft_ns_qual_std(bad_alloc) ) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -