6#ifndef DEEPLIMA_UTILS_STR_INDEX
7#define DEEPLIMA_UTILS_STR_INDEX
9#include <unordered_map>
16template <
typename S=std::
string,
typename U=std::u32
string,
typename I=u
int32_t>
26 std::string s = std::string(p, len);
66 throw std::runtime_error(
"Unknown index in StringIndex.");
92 throw std::runtime_error(
"StringIndex: can't find recently inserted element.");
103 throw std::runtime_error(
"StringIndex: can't find an element by index.");
116 std::wstring_convert<std::codecvt_utf8<char32_t>,
char32_t>
m_cvt;
const S & get_str(const idx_t idx) const
std::unordered_map< idx_t, ustring_t > m_idx2ustr
idx_t get_idx(const ustring_t &ustr)
idx_t get_idx(const char *p, size_t len)
std::wstring_convert< std::codecvt_utf8< char32_t >, char32_t > m_cvt
std::unordered_map< idx_t, string_t > m_idx2str
const U & get_ustr(const idx_t idx) const
std::unordered_map< string_t, idx_t > m_str2idx
idx_t get_idx(const string_t &str)
const U & get_ustr(const idx_t idx)
accessor with side effect.
TStringIndex< std::string, std::u32string, uint32_t > StringIndex