What is the difference between Constant-Q Transform and Wavelet Transform and which is better
A Constant Q transform is a variation on the DFT. In other words, it is a type of wavelet transform.
I only have a casual understanding of both types of transforms myself, so take what I'm saying with a grain of salt.

A standard DFT uses a constant buffer size throughout all frequencies. This typically leads to a pretty consistent, fully continuous transform. However, the constant bin size for all frequencies leads to some problems when you map frequency on a logarithmic scale. Specifically, peaks on the lower end are incredibly wide (sometimes up to half an octave), lacking any sort of detail.

This is an issue for emulating human perception because humans perceive frequency on a logarithmic scale.

A Constant Q transform seeks to solve this problem by increasing the buffer size for lower frequencies, and alleviate some of the computational strain caused by this by reducing the buffer size used for high frequencies. It's pretty effective at this, but has a few drawbacks.

The O of a Constant Q transform only slightly larger than that of a standard DFT, but because the buffer size changes per frequency, it is impossible to introduce the optimizations an FFT has to a Constant Q transform.

In other words, a Constant Q transform will yield better results where low frequencies and logarithmic frequency mapping are concerned, but it's extremely difficult to make it run realtime and has slightly less detail in the far upper frequencies.

P.S. If I am wrong about any of this, please correct me.