#include #include #include #include #include int main() { { int index { 0 }; std::vector v { 0, 1, 2, 3 }; for (auto i : select_indices(v, { 0, 1, 2, 3 })) { assert(i == index++); } } { std::vector v { 1.2, 3.45, 6.78, 9.0 }; auto range { select_indices(v, { 0, 0, 1, 0, 2 }) }; std::vector result { range.begin(), range.end() }; assert(( result == std::vector{ 1.2, 1.2, 3.45, 1.2, 6.78 } )); } { std::set v { "a", "b", "c", "d" }; auto range { select_indices(v, { 0, 1, 1, 0 }) }; std::vector result { range.begin(), range.end() }; assert(( result == std::vector{ "a", "b", "b", "a" } )); } { std::forward_list v { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; auto range { select_indices(v, { 0, 2, 6, 10 }) }; std::vector result { range.begin(), range.end() }; assert(( result == std::vector{ 1, 3, 7, 11 } )); } }