YSTest: container.hpp 文件参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 文件列表
- 文件成员

类 | 命名空间 | 类型定义 | 函数
container.hpp 文件参考
YBaseLib » YStandardExtend

通用容器操作。 更多...

`#include "iterator.hpp"`
`#include "functional.hpp"`
`#include "utility.hpp"`
`#include "algorithm.hpp"`
container.hpp 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

## 类

class | ystdex::container_adaptor< _tSeqCon >
| 容器适配器。 更多...
class | ystdex::sequence_container_adaptor< _tSeqCon >
| 序列容器适配器。 更多...
class | ystdex::container_inserter< _tCon >
| 容器插入函数对象。 更多...
struct | ystdex::details::assoc_con_traits< _tAssocCon >

## 命名空间

| ystdex
| <functional> 特性测试宏。
| ystdex::details

## 类型定义

template<class _type >
using | ystdex::details::range_size_t = decltype(size(std::declval< _type >()))
template<class _type >
using | ystdex::details::has_range_size = is_detected_convertible< size_t, range_size_t, _type >
template<class _tAssocCon , typename _tKey , typename... _tParams>
using | ystdex::is_piecewise_mapped = is_constructible< typename _tAssocCon::value_type, std::piecewise_construct_t, std::tuple< _tKey && >, std::tuple< _tParams &&... >>
| 判断关联容器、键和参数类型是否可以按 map 的方式无转移地构造。 更多...
template<class _type >
using | ystdex::details::mapped_type_t = typename _type::mapped_type

## 函数

template<class _tCon , typename _tElem >
_tCon | ystdex::make_container (std::initializer_list< _tElem > il)
template<typename _tRange >
auto | ystdex::details::range_size (const _tRange &c, true_) -> decltype(size(c))
template<typename _tRange >
auto | ystdex::details::range_size (const _tRange &c, false_) -> decltype(std::distance(begin(c), end(c)))
template<typename _tCon , typename _tIn >
_tCon::const_iterator | ystdex::insert_reversed (_tCon &con, typename _tCon::const_iterator i, _tIn first, _tIn last)
| 逆向插入范围到容器的指定位置。 更多...
template<typename _tCon , typename... _tParams>
void | ystdex::seq_insert (_tCon &con, _tParams &&...args)
| 顺序插入值至指定容器。 更多...
template<class _tCon , typename _tKey >
bool | ystdex::details::exists (const _tCon &con, const _tKey &key, decltype(std::declval< _tCon >().count())=1U)
template<class _tCon , typename _tKey >
bool | ystdex::details::exists (const _tCon &con, const _tKey &key,...)
template<class _tCon >
void | ystdex::sort_unique (_tCon &con)
| 排序指定序列容器，保留不重复元素。 更多...
template<class _tCon >
bool | ystdex::pop_back_val (_tCon &con, const typename _tCon::value_type &value)
| 若容器末尾存在指定值的元素则移除。 更多...
template<class _tCon >
bool | ystdex::pop_front_val (_tCon &con, const typename _tCon::value_type &value)
| 若容器起始存在指定值的元素则移除。 更多...
template<class _tVector , typename _func >
_tVector | ystdex::retry_for_vector (typename _tVector::size_type s, _func f)
| 从第一参数指定的起始缓冲区大小循环取向量结果，按需扩大缓冲区。 更多...
template<class _tAssocCon , typename _tKey , typename _func >
auto | ystdex::replace_value (_tAssocCon &con, const _tKey &k, _func f) -> decltype(con.emplace_hint(con.erase(con.find(k)), f(*con.find(k))))
| 替换关联容器的值。 更多...
template<class _tAssocCon , typename _tKey , typename... _tParams>
auto | ystdex::emplace_hint_in_place (_tAssocCon &con, typename _tAssocCon::const_iterator hint, _tKey &&k, _tParams &&...args) -> typename _tAssocCon::iterator
| 带有提示的原地插入构造。 更多...
template<class _tAssocCon , typename _type , typename = enable_if_convertible_t<const _type&, const typename _tAssocCon::value_type&>>
const _tAssocCon::key_type & | ystdex::extract_key (const _type &val)
| 从关联容器的值取键。 更多...
template<class _tAssocCon , typename _type , typename = enable_if_convertible_t<_type&, typename _tAssocCon::value_type&>>
const auto | ystdex::extract_mapped (_type &val) -> decltype(details::assoc_con_traits< _tAssocCon >::extract_mapped(is_detected< details::mapped_type_t, _tAssocCon >(), val))
| 从关联容器的值取映射的值。 更多...
template<class _tAssocCon , typename _tKey , typename _tParam >
std::pair< typename _tAssocCon::iterator, bool > | ystdex::details::insert_or_assign (std::pair< typename _tAssocCon::iterator, bool > pr, _tAssocCon &con, _tKey &&k, _tParam &&arg)
template<class _tSeqCon >
bool | ystdex::operator!= (const container_adaptor< _tSeqCon > &x, const container_adaptor< _tSeqCon > &y)
| 满足容器要求。 更多...
template<class _tSeqCon >
void | ystdex::swap (container_adaptor< _tSeqCon > &x, container_adaptor< _tSeqCon > &y)
template<class _tSeqCon >
bool | ystdex::operator!= (const sequence_container_adaptor< _tSeqCon > &x, const sequence_container_adaptor< _tSeqCon > &y)
| 满足容器要求。 更多...
template<class _tSeqCon >
void | ystdex::swap (sequence_container_adaptor< _tSeqCon > &x, sequence_container_adaptor< _tSeqCon > &y)
template<class _tCon , typename _tIter >
_tCon | ystdex::make_container (_tIter first, _tIter last)
| 构造指定类型的容器。 更多...
template<class _tCon , typename _tRange >
_tCon | ystdex::make_container (_tRange &&c)
template<class _tCon , typename _tRange , typename _func >
_tCon | ystdex::make_container (_tRange &&c, _func f)
template<typename _tRange >
auto | ystdex::range_size (const _tRange &c) -> decltype(details::range_size(c, details::has_range_size< _tRange >()))
| 取范围大小。 更多...
template<typename _tElem >
size_t | ystdex::range_size (std::initializer_list< _tElem > il)
template<class _tCon , typename... _tParams>
void | ystdex::assign (_tCon &con, _tParams &&...args)
| 插入参数指定的元素到容器。 更多...
template<class _tCon , typename _type , size_t _vN>
void | ystdex::assign (_tCon &con, const _type(&arr)[_vN])
template<class _tCon , typename _tIn >
void | ystdex::concat (_tCon &con, _tIn first, _tIn last)
| 插入元素到容器末尾。 更多...
template<class _tCon , typename _tRange >
void | ystdex::concat (_tCon &con, _tRange &&c)
template<typename _tSeqCon , typename _type >
void | ystdex::details::erase_all_in_seq (_tSeqCon &con, _type &&value, true_)
template<typename _tSeqCon , typename _type >
void | ystdex::details::erase_all_in_seq (_tSeqCon &con, const _type &value, false_)
template<typename _tSeqCon , typename _fPred >
void | ystdex::details::erase_all_if_in_seq (_tSeqCon &con, _fPred pred, true_)
template<typename _tSeqCon , typename _fPred >
void | ystdex::details::erase_all_if_in_seq (_tSeqCon &con, _fPred pred, false_)
template<typename _tCon , typename _type >
void | ystdex::details::erase_all (_tCon &con, decltype(cbegin(con)) first, decltype(cend(con)) last, const _type &value, true_)
template<typename _tCon , typename _type >
void | ystdex::details::erase_all (_tCon &con, const _type &value, true_)
template<typename _tCon , typename _type >
void | ystdex::details::erase_all (_tCon &con, decltype(begin(con)) first, decltype(end(con)) last, const _type &value, false_)
template<typename _tCon , typename _type >
void | ystdex::details::erase_all (_tCon &con, const _type &value, false_)
template<typename _tCon , typename _fPred >
void | ystdex::details::erase_all_if (_tCon &con, decltype(cbegin(con)) first, decltype(cend(con)) last, _fPred pred, true_)
template<typename _tCon , typename _fPred >
void | ystdex::details::erase_all_if (_tCon &con, _fPred pred, true_)
template<typename _tCon , typename _fPred >
void | ystdex::details::erase_all_if (_tCon &con, decltype(begin(con)) first, decltype(end(con)) last, _fPred pred, false_)
template<typename _tCon , typename _fPred >
void | ystdex::details::erase_all_if (_tCon &con, _fPred pred, false_)
template<class _tCon , typename _tKey >
bool | ystdex::exists (const _tCon &con, const _tKey &key)
| 判断指定的容器中存在指定的键。 更多...
template<typename _tCon , typename _tIter >
void | ystdex::erase_all (_tCon &con, _tIter first, _tIter last)
| 删除指定容器中指定区间中的或全部元素。 更多...
template<typename _tCon , typename _tIter , typename _type >
void | ystdex::erase_all (_tCon &con, _tIter first, _tIter last, const _type &value)
template<typename _tCon , typename _type >
void | ystdex::erase_all (_tCon &con, const _type &value)
template<typename _tCon , typename _tIter , typename _fPred >
void | ystdex::erase_all_if (_tCon &con, _tIter first, _tIter last, _fPred pred)
| 删除指定容器中指定区间中的或全部满足谓词的元素。 更多...
template<typename _tCon , typename _fPred >
void | ystdex::erase_all_if (_tCon &con, _fPred pred)
template<class _tAssocCon , typename _tKey >
bool | ystdex::erase_first (_tAssocCon &con, const _tKey &k)
| 删除指定关联容器中等价于指定键的起始元素。 更多...
template<class _tAssocCon >
_tAssocCon::size_type | ystdex::erase_multi (_tAssocCon &con, const typename _tAssocCon::key_type &k)
| 删除指定关联容器中等价于指定键的所有元素。 更多...
template<class _tAssocCon , typename _tKey >
_tAssocCon::size_type | ystdex::erase_multi (_tAssocCon &con, const _tKey &k)
template<typename _tCon >
_tCon::const_iterator | ystdex::erase_n (_tCon &con, typename _tCon::const_iterator i, typename _tCon::difference_type n)
| 删除指定容器中指定迭代器起始指定数量的元素。 更多...
template<typename _tCon >
_tCon::iterator | ystdex::erase_n (_tCon &con, typename _tCon::iterator i, typename _tCon::difference_type n)
template<class _tCon >
_tCon::iterator | ystdex::cast_mutable (_tCon &con, typename _tCon::const_iterator i)
| 移除 const_iterator 的 const 限定。 更多...
template<class _tCon , typename _type >
std::pair< typename _tCon::iterator, _type > | ystdex::cast_mutable (_tCon &con, const std::pair< typename _tCon::const_iterator, _type > &pr)
template<class _tCon >
_tCon && | ystdex::trail (_tCon &&con, const typename decay_t< _tCon >::value_type &value={})
| 保证非空容器以参数指定的元素结尾。 更多...
template<class _tCon , typename... _tParams>
_tCon && | ystdex::trail (_tCon &&con, _tParams &&...args)
template<class _tVector , typename _tIn >
void | ystdex::vector_concat (_tVector &vec, _tIn first, _tIn last)
| 插入元素到 `vector` 末尾。 更多...
template<class _tVector , typename _tRange >
void | ystdex::vector_concat (_tVector &vec, _tRange &&c)
template<class _tAssocCon , typename _tKey >
std::pair< typename _tAssocCon::const_iterator, bool > | ystdex::search_map (const _tAssocCon &con, const _tKey &k)
| 按指定键搜索指定关联容器。 更多...
template<class _tAssocCon , typename _tKey >
std::pair< typename _tAssocCon::iterator, bool > | ystdex::search_map (_tAssocCon &con, const _tKey &k)
template<class _tAssocCon , typename _tKey >
std::pair< typename _tAssocCon::const_iterator, bool > | ystdex::search_map (const _tAssocCon &con, typename _tAssocCon::const_iterator hint, const _tKey &k)
| 按指定键和提示的迭代器位置搜索指定关联容器。 更多...
template<class _tAssocCon , typename _tKey >
std::pair< typename _tAssocCon::iterator, bool > | ystdex::search_map (_tAssocCon &con, typename _tAssocCon::const_iterator hint, const _tKey &k)
template<typename _func , class _tAssocCon , typename... _tParams>
std::pair< typename _tAssocCon::const_iterator, bool > | ystdex::search_map_by (_func f, const _tAssocCon &con, _tParams &&...args)
| 按指定键值搜索指定映射并执行操作。 更多...
template<typename _func , class _tAssocCon , typename... _tParams>
std::pair< typename _tAssocCon::iterator, bool > | ystdex::search_map_by (_func f, _tAssocCon &con, _tParams &&...args)
template<class _tAssocCon , typename _tKey , typename... _tParams>
std::pair< typename _tAssocCon::iterator, bool > | ystdex::try_emplace (_tAssocCon &con, _tKey &&k, _tParams &&...args)
template<class _tAssocCon , typename _tKey , typename... _tParams>
std::pair< typename _tAssocCon::iterator, bool > | ystdex::try_emplace_hint (_tAssocCon &con, typename _tAssocCon::const_iterator hint, _tKey &&k, _tParams &&...args)
template<class _tAssocCon , typename _tKey , typename _tParam >
std::pair< typename _tAssocCon::iterator, bool > | ystdex::insert_or_assign (_tAssocCon &con, _tKey &&k, _tParam &&arg)
template<class _tAssocCon , typename _tKey , typename _tParam >
std::pair< typename _tAssocCon::iterator, bool > | ystdex::insert_or_assign_hint (_tAssocCon &con, typename _tAssocCon::const_iterator hint, _tKey &&k, _tParam &&arg)
template<class _type , typename... _tParams>
using | ystdex::details::mem_remove_t = decltype(std::declval< _type >().remove(std::declval< _tParams >()...))
template<typename _type , typename... _tParams>
using | ystdex::details::has_mem_remove = is_detected< mem_remove_t, _type, _tParams... >
template<class _type , typename... _tParams>
using | ystdex::details::mem_remove_if_t = decltype(std::declval< _type >().remove_if(std::declval< _tParams >()...))
template<typename _type , typename... _tParams>
using | ystdex::details::has_mem_remove_if = is_detected< mem_remove_if_t, _type, _tParams... >
template<class _type >
using | ystdex::details::key_type_t = typename _type::key_type
template<typename _type >
using | ystdex::details::has_mem_key_type = is_detected< key_type_t, _type >
template<typename _tSeqCon , typename _type >
void | ystdex::details::erase_remove (_tSeqCon &con, decltype(begin(con)) first, decltype(end(con)) last, const _type &value)
template<typename _tSeqCon , typename _fPred >
void | ystdex::details::erase_remove_if (_tSeqCon &con, decltype(begin(con)) first, decltype(end(con)) last, _fPred pred)

## 详细描述

通用容器操作。

版本
  r1931

作者
  FrankHB frank.nosp@m.hb19.nosp@m.89@gm.nosp@m.ail..nosp@m.com

自从
  build 338

创建时间:
  2012-09-12 01:36:20 +0800

修改时间:
  2017-06-03 12:39 +0800

文本编码:
  UTF-8

模块名称:
  YStandardEx::Container

在文件 container.hpp 中定义.