#include <valarray> #include <cstdarg> #include <iostream> #include <iomanip> std::valarray<std::size_t> selection(std::size_t num, ... ) { va_list arguments; std::valarray<std::size_t> sel(num); va_start ( arguments, num ); for ( std::size_t i = 0; i < num; i++ ) sel[i] = va_arg ( arguments, int ); va_end ( arguments ); return sel; } int main () { std::valarray<int> array(30); array[selection(3, 9,5,14)] = 1; array[selection(4, 8,15,13, 12)] = 2; for (std::size_t i = 0, end = array.size(); i < end; ++i) std::cout << std::setw(2) << i << ','; std::cout << '\n'; for (auto v : array) std::cout << std::setw(2) << v << ','; return 0; }
Standard input is empty
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29, 0, 0, 0, 0, 0, 1, 0, 0, 2, 1, 0, 0, 2, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,