7 using namespace std::placeholders;
13 : m_data(
std::accumulate(idict.begin(), idict.
end(), 0, [](
int a,
std::
string b) {
return a +
b.size(); })),
14 m_index(idict.size(), 1) {
17 std::partial_sum(m_index.begin(), m_index.end(), m_index.begin());
18 std::sort(m_index.begin(), m_index.end(), [&idict](
unsigned int a,
unsigned int b) {
19 return std::less<std::string>()(idict[
a], idict[
b]);
23 std::vector<char>::iterator
p = m_data.begin();
24 for (
size_t j = 0;
j < m_index.size();
j++) {
25 size_t i = m_index[
j];
27 m_index[
j] =
p - m_data.begin();
33 return std::lexicographical_compare(rh.
b, rh.
b + rh.
l,
lh.b,
lh.b +
lh.l);