文字列アトム
[詳解]
#include <wordring/string/atom.hpp>
|
using | string_type = String |
|
using | label_type = typename string_type::value_type |
|
using | difference_type = std::ptrdiff_t |
|
using | value_type = Label |
|
using | pointer = value_type * |
|
using | reference = value_type & |
|
using | iterator_category = std::input_iterator_tag |
|
|
using | base_type = typename stable_trie< typename String::value_type >::const_iterator |
|
using | base_type = Base |
|
using | unsigned_type = std::make_unsigned_t< Label > |
|
|
| basic_atom (base_type it) |
| アトムを構築する [詳解]
|
|
| basic_atom (container const &c, index_type idx) |
| アトムを構築する [詳解]
|
|
| const_trie_iterator (container &c, index_type index) |
|
| const_trie_iterator (base_type const &it) |
|
|
template<typename String1 , typename Allocator1 > |
class | wordring::basic_atom_set |
|
template<typename String1 , typename Allocator1 > |
bool | operator== (basic_atom< String1, Allocator1 > const &, basic_atom< String1, Allocator1 > const &) |
|
template<typename String1 , typename Allocator1 > |
bool | operator!= (basic_atom< String1, Allocator1 > const &, basic_atom< String1, Allocator1 > const &) |
|
|
static constexpr std::uint16_t | null_value = 256u |
|
static constexpr std::uint32_t | coefficient = sizeof(value_type) / sizeof(typename base_type::value_type) |
|
template<typename String, typename Allocator = std::allocator<detail::trie_node>>
class wordring::detail::basic_atom< String, Allocator >
文字列アトム
このクラスの実体は整数値と文字列を返す。 この文字列と整数値は一対一に対応する。
- 参照
- wordring::basic_atom_set
◆ basic_atom() [1/3]
template<typename String , typename Allocator = std::allocator<detail::trie_node>>
◆ basic_atom() [2/3]
template<typename String , typename Allocator = std::allocator<detail::trie_node>>
アトムを構築する
- 引数
-
[in] | c | ダブル・アレイの内部コンテナ |
[in] | idx | ノードの索引 |
◆ basic_atom() [3/3]
template<typename String , typename Allocator = std::allocator<detail::trie_node>>
空のアトムを構築する
- 例
basic_atom<std::string> a;
◆ operator std::uint32_t()
template<typename String , typename Allocator = std::allocator<detail::trie_node>>
アトムをIDに変換する
- 戻り値
- アトムが文字列を持つ場合、IDを示す整数値、それ以外の場合0
アトムのIDが0になることは無いため、0を無効な値として使用する。
- 例
std::vector<std::u32string> v{ U"あ", U"あう", U"い", U"うあい", U"うえ" };
auto as = basic_atom_set<std::u32string>(v.begin(), v.end());
auto a = as.at(U"い");
auto i = static_cast<std::uint32_t>(a);
assert(i != 0);
◆ operator string_type()
template<typename String , typename Allocator = std::allocator<detail::trie_node>>
アトムを文字列に変換する
- 戻り値
- アトムが文字列を持つ場合、その文字列、それ以外の場合、空の文字列
- 例
std::vector<std::u32string> v{ U"あ", U"あう", U"い", U"うあい", U"うえ" };
auto as = basic_atom_set<std::u32string>(v.begin(), v.end());
auto a = as.at(U"い");
auto s = static_cast<std::u32string>(a);
assert(s == U"い");
◆ string()
template<typename String , typename Allocator = std::allocator<detail::trie_node>>
アトムを文字列に変換する
- 引数
-
- 戻り値
- アトムが文字列を持つ場合、その文字列、それ以外の場合、何もしない
バッファが十分であれば文字列を書き込むためのメモリーを確保しないため、繰り返し呼び出すための最速の方法となる。
- 例
std::vector<std::u32string> v{ U"あ", U"あう", U"い", U"うあい", U"うえ" };
auto as = basic_atom_set<std::u32string>(v.begin(), v.end());
auto a = as.at(U"い");
std::u32string s;
a.string(s);
assert(s == U"い");
このクラス詳解は次のファイルから抽出されました: