Time Complexity of inserting a vector to a vector of vectors in C++
First tings first:
Line X does a copy subs[i] and creates a new vector.
In terms of vector length $n$ this step is $O(n)$.
Line Y is amortized O(1). (The vector might need to reallocate making it O(n) in the worst case; to avoid reallocation see @MSalters post.)
The runtime of the whole procedure is a bit more difficult.
At the $i$-th number subs contains every possible subset of all numbers so far.
Thus length of subs $=2^i$, but we are interested in how many numbers we need to copy. this can be calculate with the sum of all subset sizes which is $i2^{i-1}$ (meaning at step $i$ we have to copy $i2^{i-1}$ numbers and make $2^i$ push operations).
$$O\left(\sum_{i=0}^{n-1} i2^{i-1}+2^i\right) = O(n2^n)$$
The complexity on the right makes sense, all sizes of all vectors in subs will be $n2^{n-1}$ in the end.