Esempio n. 1
0
 static void write(succinct::bit_vector_builder& bvb,
                   Iterator begin,
                   uint64_t universe, uint64_t n,
                   global_parameters const& params)
 {
     uint64_t new_universe = universe - n + 1;
     typedef typename std::iterator_traits<Iterator>::value_type value_type;
     auto new_begin =
         make_function_iterator(std::make_pair(value_type(0), begin),
                                [](std::pair<value_type, Iterator>& state) {
                                    ++state.first;
                                    ++state.second;
                                }, [](std::pair<value_type, Iterator> const& state) {
                                    return *state.second - state.first;
                                });
     compact_elias_fano::write(bvb, new_begin, new_universe, n, params);
 }
        static void write(succinct::bit_vector_builder& bvb,
                          Iterator begin,
                          uint64_t universe, uint64_t n,
                          global_parameters const& params)
        {
            assert(n > 0);
            auto cumulative_begin =
                make_function_iterator(std::make_pair(uint64_t(*begin), begin),
                                       [](std::pair<uint64_t, Iterator>& state) {
                                           state.first += *++state.second;
                                           //mystifying, *(++(state.second))
                                       }, [](std::pair<uint64_t, Iterator> const& state) {
                                           return state.first;
                                       });
            base_sequence_type::write(bvb, cumulative_begin, universe, n, params);

        }
Esempio n. 3
0
	constexpr void reinit_vector_fn(matrix< M, C, R >& m, F&& f){
		static_assert((C == 1_C && R != 0_R) || (C != 0_C && R == 1_R),
			"reinit_vector_fn is only allowed for compile time dim vectors");

		reinit_iter(m, make_function_iterator(static_cast< F&& >(f)));
	}
Esempio n. 4
0
	constexpr void reinit_fn(matrix< M, C, R >& m, F&& f){
		reinit_iter(m, make_function_iterator(make_function_xy_adapter(
				static_cast< F&& >(f), m.cols())));
	}