I recently learned that all stl containers have swap function:
i.e.
c1.swap(c2);
will lead to object underlying c1 being assigned to c2 and vice versa.
I asked my professor if same is true in case of c1 and c2 being references.
he said same mechanism is followed.
I wonder how it happens since c++ references cannot be reseted.
References are aliases. If you have two references, calling swap will swap what they are referring to, not the references themselves.
And it’s not the variables that get swapped, it’s what make them logically independent that gets swapped. If a container only consists of a pointer, if you swap that pointer with the pointer of another container, you’ve effectively swapped the containers. The variables themselves remain.
Concrete example: