Copy and bit-invert ints in an std::vector
You can utilize std::transform here (I'll assume C++11 for the lambda):

int main()
{
    std::vector&lt;uint8_t&gt; first_list = {0x01, 0x10, 0x32, 0x1A};
    std::vector&lt;uint8_t&gt; second; 
    std::transform(first_list.begin(), first_list.end(), std::back_inserter(second),
                   [](uint8_t u) { return ~u; });
}


You also don't need to make a copy of the first vector to do this; better to simply use push_back (or back_inserter here, since we're working with iterators).