Similar, but not the same.
V-Sync tries to match the refresh rate of the game as closely as possible to your screen refresh rate. So if you have for example 40 fps, and your monitor 60, some of the 40 frames are displayed multiple times, depending how long the next frame takes to render. In some implementations, V-Sync falls back to 30 fps when you are between 30 and 60, to make it look smoother with even frame times.
With the fps cap, the frames are drawn as soon as they are ready. This makes the game feel a little more smooth, because the previous frame is not rendered again when there is already part of a new frame in the buffer. But that can lead to tearing, as you see parts of frames that are from different render cycles. Even at 60 fps you can experience tearing when the display and the GPU run out of sync, so fps cap is better for low fps, but worse for high fps.
When there are too many frames coming from the GPU, the next frame is delayed until the display is ready. This is the same with fps cap and V-Sync.
The problem is that you usually want to run the game with (real) V-Sync when you are over 60 fps, but without when you are below. In the NVIDIA Control Panel for example you can select Adaptive V-Sync per application, which enables V-Sync as soon as you exceed 60 fps. This enables smooth fps with a little tearing below 60 fps, and super smooth synchronized 60 fps when your GPU is below 100% load.