Ok, so I have this code:
Conceptually... vector bit6 is really not needed. It's just an artifact of the problem that I can't start std::transform until after the bit8_to_bit6 function is done. Is there some kind of inserter-wrapper I can use to take it out of the picture? Something like this maybe:Code:template <typename Iter, typename Ins> bit8_to_ASCII (Iter begin, Iter end, Ins output) { // Need this vector to hold intermediate values. std::vector<unsigned char> bit6; // Stretch the 8-bit values out to 6-bit values, store the result in vector bit6. bit8_to_bit6 (begin, end, std::back_inserter(bit6)); // Translate the 6-bit values into ASCII values. Store the output in the // output stream. std::transform (bit6.begin(), bit6.end(), output, bit6_to_ASCII); return; }
Code:template <typename Iter, typename Ins> bit8_to_ASCII (Iter begin, Iter end, Ins output) { // No need to allocate an intermediate vector // Whenever something is output to transforming_inserter, it calls bit6_to_ASCII // on the input, and stores the result in output. SOME_TYPE transforming_inserter = SOME_FUNCTION(output, bit6_to_ASCII); // Stretch the 8-bit values out to 6-bit values, store the result in // the custom inserter which will perform bit6_to_ASCII on the fly. bit8_to_bit6 (begin, end, transforming_inserter); return; }



LinkBack URL
About LinkBacks



Want to add some
CornedBee