A lambda should do the trick:
#include <algorithm>
#include <iterator>
std::transform(a.begin(), a.end(), // first
b.begin(), // second
std::back_inserter(c), // output
[](uint32_t n, uint32_t m) { return n & m; } );
Even better, thanks to @Pavel and entirely C++98:
#include <functional>
std::transform(a.begin(), a.end(), b.begin(),
std::back_inserter(c), std::bit_and<uint32_t>());
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…